NameNotFoundException用2.1 EJB部署JBoss jar

时间:2014-07-16 09:53:58

标签: java jboss ejb jboss6.x jboss-4.0.x

我正在将应用程序从JBoss 4.0.4迁移到JBoss 6.1。有一个jar有一些2.1版EJB。其中一个会话bean有一个静态初始化程序,用于查找实体bean。这在4.0.4中运行正常但在启动JBoss 6.1时出现此错误 - “javax.naming.NameNotFoundException:mymod not bound”。

static
{
    MyEntityBeanLocalHome lhpt = MyEntityBeanUtil.getLocalHome();
    Collection things = lhpt.findAll();
    populate a static HashMap with things
}

在上面的getLocalHome行抛出异常,执行以下操作:

InitialContext ic = new InitialContext(null);
Object objRef = ic.lookup("ejb/mymod/MyEntityBeanLocal");          <-- fails here
if (java.rmi.Remote.class.isAssignableFrom(MyEntityBeanLocalHome.class))
    return javax.rmi.PortableRemoteObject.narrow(objRef, MyEntityBeanLocalHome.class);
else
    return objRef;

我对JBoss 4.0.4中部署好的jar感到有些惊讶 - 毕竟,为什么在原始编码器试图查找它时,实体bean是否已绑定到JNDI?

但我想就解决这个问题的最佳方法提出一些意见。会话bean是无状态的,因此将静态代码移动到ejbActivate不是一种选择。我正在考虑创建一个POJO,它可以从会话bean的业务方法访问,并让POJO检索实体(仅一次)。

感谢您提供任何有用的信息。

0 个答案:

没有答案