现在的位置: 首页 > 综合 > 正文

NetBeans ,GlassFish,EJB境配置 QA

2013年12月02日 ⁄ 综合 ⁄ 共 969字 ⁄ 字号 评论关闭

preface:

最近在研究EJB 起初用的是JBoss+MyEclipse,后来使用NetBeans开发,转而使用GlassFish.选用NetBeans和GlassFish主要是因为希望得到"一站式"的结局方案,防止大量时间浪费在环境配置上……最终的环境配置如下:NetBeans6.5 GlassFishv2ur2 MySQL 5.1 JDK1.6U12

 

Q1:使用NetBeans为Jboss服务器创建应用程序客户端的时候不能使用@EJB注入SessionBean?

A:NetBeans中为Jboss建立的应用程序客户端只支持J2EE1.4,不支持Annotation,所以无法使用依赖注入。现在发现的唯一可以使用依赖注入应用程序客户端的情况是:将GlassFish应用程序客户端打包到企业应用程序,并设为启动,然后运行企业应用程序

具体参见:http://www.netbeans.org/kb/61/javaee/entappclient_zh_CN.html

 

Q2:NetBeans无法识别Jboss5上部署的EJB模块,并且手动部署的时候也会出错

A:NetBeans6.5+JBoss5.0GA+JDK1.6会出现以上情况。如果使用MyEclipse6.5管理JBoss则没有问题.NetBeans于Jboss4.2.2GA集成没有问题。

 

Q3:同样的EJB部署到JBoss和GlassFish上的时候Jndi名称相差很远

A:两个应用服务器的命名策略不一样。比如一个SessionBean使用如下的注释

@Stateless(name="MyEJB" mappedName="MyEJB222")

如果在Jboss上部署,EJB的Jndi名称为:MyEJB/remote或者MyEJB/local

如果在GlassFish上部署,EJB的Jndi名称则为:MyEJB222

在编写客户端应用的时候需要特别注意这点(如果您有更好的解决方案,不胜赐教)

建议使用相同的name和mappedName,并在@EJB注入的时候使用beanName属性

 

Q4:如何在GlassFish中查找具有多个远程接口的EJB

A:使用EJB全局JNDI名称#远程接口名称。比如context.lookup("MyBean#com.ejb.MyBeanRemote1");

抱歉!评论已关闭.