0

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

* @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"

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

在 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 命名方案提供简短的解释,那也将不胜感激!

4

1 回答 1

0

这对我有用。

假设您有一个名为“test.ear”的耳朵和一个无状态会话 bean“com.test.SessionClass”,并且 SessionClass 实现了“com.test.SessionClassRemote”...JNDI 查找将是

ctx.lookup("test/SessionBean/com.test.SessionClass!com.test.SessionRemote"); 
于 2013-06-18T20:31:01.110 回答