【问题标题】:Changing EJB 2 Xdoclet JNDI for Jboss AS 7为 Jboss AS 7 更改 EJB 2 Xdoclet JNDI
【发布时间】:2013-06-13 14:56:25
【问题描述】:

我正在将应用程序从 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 命名方案提供一个简短的解释,那也将不胜感激!

【问题讨论】:

    标签: jboss7.x jndi ejb-2.x xdoclet


    【解决方案1】:

    这对我有用。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多