首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

GlassFish中Application Client(应用程序客户端)中应用@EJB

2012-10-29 
GlassFish中Application Client(应用程序客户端)中使用@EJB最近在研究EJB,刚开始使用的是JBoss4.2。JBoss可

GlassFish中Application Client(应用程序客户端)中使用@EJB
最近在研究EJB,刚开始使用的是JBoss4.2。JBoss可以满足开发EJB中的绝大部分需求。但是JBoss4.2不支持@EJB注释在 Servelt中的使用。因为JBoss并不是JavaEE5.0规范的完全实现产品。出于好奇,将服务器更换为GlassFish2.1。

     网上有些关于如何在GlassFish的Application Client(应用程序客户端)中使用@EJB的文章,但是都是简单的几句:

   “appclient -client  ejbClient.jar

     ............................”

    (这在《Beginning EJB.3.Application.Development》一书中也是这样,很简略。)

在研究了2天后,终于可以在Application Client(应用程序客户端)中使用@EJB注解了,要求如下:

第一步:EJB模块部署到GlassFish中

第二步:将客户端打包成jar(这是重点)

              jar文件必备的要点如下(XXX是您的EJB独立客户端的路径):

              1、jar文件必须有Entry Point(即入口),否则:“无法确定XXX中JavaEE模块类型”的错误。

              2、jar文件中不能含有EJB模块的实现,否则:“归档文件XXX似乎有效,但应为应用客户机或企业应用程序”。

第三步:在%GlassFish%\bin\下,调用 appclient -client  XXX.jar package app.service;import javax.ejb.Remote;@Remotepublic interface HelloWorld {public String sayHello();}

 

package app.service.impl;import javax.ejb.Stateless;import app.service.HelloWorld;@Stateless(mappedName="ejb/HelloWorld")public class HelloWorldBean implements HelloWorld {@Overridepublic String sayHello() {return "你好,GlassFish!";}}  


   然后建立一个JavaSE的客户端:
 
package app.test;import javax.ejb.EJB;import app.service.HelloWorld;public class TestEJB {@EJB(mappedName="ejb/HelloWorld")static HelloWorld hello;void doTest(){System.out.println(hello.sayHello());}public static void main(String[] agrs){new TestEJB().doTest();}}


注意: static关键字不能缺少,否则会报错!@EJB的第2中形式 @EJB(name=”target” , beanInterface= XXX.class),如何在独立客户端中使用,尚不明确!


相信,这个客户端在JBoss中是无法工作的。但是将TestEJB打成jar包后(如何打包请看原帖),利用GlassFish提供的工具appclient.bat,独立的客户端就可以利用JavaEE提供的服务了!

至于,这个工具有多大的用处,目前尚不明了。本文只是说明一个常见的用法!

热点排行