Changing EJB 2 Xdoclet JNDI for Jboss AS 7



我正在将一个应用程序从Jboss 3迁移到Jboss 7。我使用的是jboss-as-7.1.1.Final。该应用程序是一个.ear,包含几个EJB .jar和一个.war,其中包含所有servlet和jsp页面。ejb既是CMP实体bean又是会话bean,并且大量使用Xdoclet。我正处在这样一个点上,应用程序的构建和部署都是正常的,但由于明显的JNDI问题,ejb无法正确地实例化。我知道Jboss 7对JNDI的使用方式进行了更改,但是关于如何将这些更改应用于EJB 2 xdoclet代码的文档很少,几乎不存在。假设我有会话bean代码UserManagerEJB.java,下面是xdoclet

* @ejb.bean
*     name="UserManager"
*     jndi-name="ejb/UserManager"
*     type="Stateless"
*     view-type="remote"
*     transaction-type="Container"

UserManagerEJB使用以下xdoclet

引用实体bean User
* @ejb.ejb-ref
*     ejb-name="User"
*     view-type="local"
*     ref-name="ejb/UserLocal"

和实体bean代码UserEJB.java具有以下xdoclet声明

* @ejb.bean
*    name="User"
*    local-jndi-name="ejb/UserLocal"
*    primkey-field="userId"
*    type="CMP"
*    view-type="local"

Jboss AS 7指定jndi-name、local-jndi-name和ref-name的正确方法是什么?

在web应用程序的.war/web - inf/web.xml中作为ejb-ref-name使用的JNDI名称是什么?

以前ejb/EJBNAME只是工作,但现在这样做只是让我一个NamingException。盲目地将所有JNDI名称更改为java:app/myuser/User!com.myco.module.myuser.ejb.entity.UserLocal不管用,我开始陷入改变事物的深渊,坦率地说,我不太理解。JNDI命名方案的变化似乎比我习惯的要大得多。

如果有人能提供一个简短的解释新的JNDI命名方案,将非常感激!

这对我很有效。

假设你有一只耳朵叫做"测试"。Ear"和无状态会话bean"com.test"。SessionClass",SessionClass实现了"com.test.SessionClassRemote"…JNDI查找将是

ctx.lookup("test/SessionBean/com.test.SessionClass!com.test.SessionRemote"); 

最新更新