<尚学堂><EJB> 4-第一个EJB实例的开发
新建一个EJB项目: (基于MyEclipse 8.6)
开发EJB分为两个步骤:
1. 开发服务端;
2. 开发客户端;
在MyEclipse中配置JBoss服务器:
1>

2> 配置完成后, 打开Servers视图:

点击启动, 即可启动服务器;输入http://localhost:8080进行测试:

3> 通过MyEclipse可以很方便的进行EJB项目的部署和测试:


1. 新建一个EJB Project: 【四-03:00】
1>

2>

2. 编写EJB: 【四-06:00】
分为两部分, 一个是接口, 另一个是实现类.
1> 编写EJB接口:

2> 编写具体实现类:

注: 实现类命名规范通常是在接口的末尾加*Bean.
3. 利用注解配置EJB:

注意: 必须对已经写好的类进行注解或是配置文件的配置,标志当前类是一个EJB, 否则服务器不会将其视为EJB对象。
4. 部署到JBoss服务器:

部署完成后的JBoss目录状态如下:
(1)目录形式:

(2)jar包形式:

注:部署到服务器中的可以是一个jar包,也可以是一个目录
5. 客户端开发: 【四-10:00】
1> 客户端使用一个Java项目,在MyEclipse中新建一个Java项目即可;
2> 将EJB项目的接口打包(客户端只需要EJB的接口即可), 并把这个jar包加入到客户端项目的类加载路径中即可;
具体仅仅将EJB项目中的接口导出为jar包的方式如下:



客户端和服务端的唯一桥梁就是这个接口所组成的jar包.
将导出的ejb01.jar包加入到Client项目的类路径中:

3> 将JBoss安装目录下的Client目录里面的所有jar包加入到客户端项目中; 【四-12:00】
为了方便起见, 可以创建一个User Library将经常用到的jar包集合放在一起, 在需要的时候可以直接导入.

创建完成后, 将该EJB3_Client Library 加入到客户端所在的java项目中:


4> 编写如下的客户端代码:
package cn.edu.bupt.ejbclient; import javax.naming.InitialContext; import javax.naming.NamingException; import cn.edu.bupt.ejb.FirstEjb; public class FirstEjbClient { public static void main(String[] args) throws NamingException { InitialContext context = new InitialContext(); // InitialContext对象是JNDI中的对象, JNDI是JBoss服务器提供的一种服务 FirstEjb stub = (FirstEjb)context.lookup("FirstEjbBean/remote"); // JNDI名称规则(不同的服务器有不同的命名规则,这里以JBoss服务器为例), 第一个名称就是EJB实现类的名称, 例如: FirstEjb String s = stub.saySomething("张三"); System.out.println(s); } }
InitialContext是JNDI中的对象, JNDI是JBOss服务器提供的一种服务, EJB的名称查询都是通过JNDI服务在服务器端进行查询的.
对于目标EJB在服务器端的JNDI名称命名规则, 就是他的类名, 例如:"FirstEjbBean", 然后如果是远程调用的话, 使用在加入"/remote"
5> 在客户端源代码目录下添加"jndi.properties"文件, 之所以要求有这个配置, 是因为具体的JNDI实现依赖于具体的服务器, 不同的服务器的JNDI实现是不相同的, 类似于Spring的BeanFactory一样, 需要告诉具体的实现类.
而在main方法中的InitialContext是一个接口, 具体实现类是有jndi.properties配置文件决定的.
#该配置文件的目的是当再客户端调用new InitialContext()的时候,自动加载该配置文件的配置信息 #之所以要求有这个配置, 是因为具体的JNDI实现依赖于具体的服务器, 不同的服务器的JNDI实现是不相同的, 类似于Spring的BeanFactory一样, 需要告诉具体的实现类. #而在main方法中的InitialContext是一个接口, 具体实现类是有jndi.properties配置文件决定的. java.naming.factory.inital=org.jnp.interfaces.NamingContextFactory java.naming.factory.pkgs=org.jboss.naming:org.jnp.interfaces #jboss服务器所在及其的IP地址 java.naming.provider.url=127.0.0.1
注: 如果没有该属性文件也可以执行, 但是需要将相关的信息写入到java代码中.
浙公网安备 33010602011771号