浏览 3352 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-21
最后修改:2009-11-23
网上有些关于如何在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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-11-22
我用的jboss-5.1.0.GA,安装了jboss-ejb3-plugin-1.0.18,在servlet 2.5里,可以用@EJB的,不过要把ejb和web的工程打在一个ear文件里才行,我试过可以了!
|
|
返回顶楼 | |
发表时间:2009-11-23
最后修改:2009-11-23
yz2yz 写道 我用的jboss-5.1.0.GA,安装了jboss-ejb3-plugin-1.0.18,在servlet 2.5里,可以用@EJB的,不过要把ejb和web的工程打在一个ear文件里才行,我试过可以了!
你说的很对。 在JavaEE EJB3.0规范中,@EJB注释可以对以下组件进行注释: * Servlets * ServletContextListeners * Servlet Filters * JSF managed beans * EJB session bean * EJB interceptors * JAX-WS service endpoints 然而在JBoss4.2以及JBoss5.0中,都无法实现在Servlet中注入EJB!。(当然借助于插件就可以了!)。 不过我说的是另外一种情况,即只有在Glassfish中才有的情况。一般独立的客户端(比如JavaSE客户端),调用在JBOSS中的EJB组件时,只能使用JNDI Lookup的方法。而无法使用到JavaEE环境下的依赖注入、以及依赖查找的方式来获取EJB组件。 然而,GlassFish专门提供了一个工具--- appclient.bat。通过这个工具,一个独立的客户端,可以使用JavaEE环境下才用的特性(当然前提是GlassFish必须启动)。 新建一个StatelessSessionBean: package app.service; import javax.ejb.Remote; @Remote public 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 { @Override public 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(); } } 注意:
相信,这个客户端在JBoss中是无法工作的。但是将TestEJB打成jar包后(如何打包请看原帖),利用GlassFish提供的工具appclient.bat,独立的客户端就可以利用JavaEE提供的服务了! 至于,这个工具有多大的用处,目前尚不明了。本文只是说明一个常见的用法! |
|
返回顶楼 | |