随笔 - 0, 文章 - 75, 评论 - 0, 引用 - 0
数据加载中……

开发EJB的客户端

因为EJB属于业务层,通常它要被客户端所调用


客户端类型可以是:J2SE J2EE J2ME



才用普通的JAVA类开发客户端:


新建 new一个Class 带有main()方法



客户端要调用EJB是要先通过JNDI去寻找EJB的承担对象


JNDI是用于访问命名目录的API,也是JAVA EE中的规范



开发EJB的客户端

这里编写的客户端程序完全可以部署在另外一台计算机上,只需要修改其中连接的服务器IP地址和启动JBOSS时绑定相应IP地址即可,这正事EJB的远程调用特性。
在37行返回的helloWorld实例对象并不是我们在服务器端编写的HelloworldBean,而是一个也实现了HelloWorld接口的代理对象,这个代理对象最终远程调用我们自己编写的HelloWorldBean,在第37行后加入了一行代码:System.out.println(helloWorld.getClass().getName());
即可看到这个代理对象的类名



当EJB发布到JBOSS时,如果我们没有为它指定全局JNDI名称或修改过其默认EJB名称,JBOSS就会按照默认的命名规则为EJB生成全局JNDI名称,默认的命名规则如下:


把EJB应用打包成后缀为*.jar的模块文件,默认的全局JNDI名称是:
本地接口:EJB-CLASS-NAME/local
远程接口:EJB-CLASS-NAME/remote
EJB的接口实现类名(不加包名)
例:把HelloWorld应用打包成HelloWorld.jar文件,他的远程接口JNDI名称是:
HelloWorldBean/remote



把EJB作为模块打包进后缀名*.ear的JAVA
EE企业应用文件,默认全局JNDI名称是:
本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
EAR-FILE-BASE-NAME为ear文件的名称,EJB-CLASS-NAME作为EJB的非限定类名
例:把HelloWorld应用打包成HelloWorld.ear的企业应用文件,他的远程接口JNDI名称是:
HelloWorld/HelloWorldBean/remote



----------------------------------------------------------------


通过属性文件,设置JNDI的上下文信息:


把硬编码的代码,放到配置文件中


Properties props = new Properties();


props.setProperty("java.naming.factory.initial"
,"org.jnp.interfaces.NamingContextFactory");


props.setProperty("java.naming.provider.url", "localhost:1099");


就可以注释掉了



在项目src下新建File 名称为:jndi.properties


内容:


java.naming.factory.initial =
org.jnp.interfaces.NamingContextFactory
java.naming.provider.url =
localhost:1099


保存,启动JBOSS后,运行客户端也可执行



在InitalContext cts = new InitalContext();
时,其构造方法中默认从类路径下找jndi.properties文件



HelloWorld helloWorld = (HelloWorld)cts.lookup("HelloWorldBean/remote");


这句可能会报错,解决方案是:


查看EJB的JNDI


进入JBOSS的管理后台 http://localhost:8080/


开发EJB的客户端


点JMX Console,找到jboss,点service = JNDIView


开发EJB的客户端


这个服务提供了一个list()方法,点Invoke按钮,会列出JBOSS里面的资源


开发EJB的客户端
开发EJB的客户端


EJB部署后,生成的JNDI是在全局JNDI中(Global JNDI Namespace)


开发EJB的客户端


在其中找到EJB的JNDI名称,如果找到了则发布成功



也有可能是jar包出了问题,重新导jar包

posted on 2012-04-22 16:08 hantai 阅读(286) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: