JBoss 7.1中的InitialContext.lookup()参数

时间:2012-10-14 11:27:06

标签: jboss jboss7.x ejb-3.1 initial-context

我是EJB 3.1世界的新手,并试图通过JBoss Application Server 7.1获得一些基础知识。

目前我陷入了一个非常基本的问题。当服务器上的bean想要使用另一个bean时,我需要使用InitialContext.lookup()方法。如果我查看文献,我会发现如下呼叫:

TheBean = (<Interface>) new InitialContext().lookup("<NameOfTheBean>/local");

但这个电话对我不起作用。每次我收到这样的错误:

javax.ejb.EJBException: javax.naming.NameNotFoundException

在寻找解决方案几个小时之后,我找到了使用另一个调用的代码示例,如下所示:

TheBean = (<Interface>) new InitialContext().lookup("ejb:/<Package>//<NameOfTheBean>!<Package>.<Interface>");

这个解决方案对我有用,但问题是为什么?有人知道为什么第一个调用产生异常而第二个调用正常吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

为什么呢?不同版本的JBoss在JNDI名称空间中部署具有不同默认名称的bean。

  ctx.lookup("BeanName/local")

适用于JBoss 4.x.x及更高版本但不适用于JBoss v7。 您可以在JB7的server.log中看到您的bean如何映射到JNDI名称, 例如(参见java:/ jboss / exported / ...以及它与你的第二次连续调用的对应关系):

13:57:05,550 INFO               [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC      service thread 1-4) JNDI bindings for session bean named ProductionHistoryBean in deployment unit deployment "navi-ejb3.jar" are as follows:

        java:global/navi-ejb3/ProductionHistoryBean!navi.ejb3.production.history

.ProductionHistoryRemote

        java:app/navi-ejb3/ProductionHistoryBean!navi.ejb3.production.history.Pr

oductionHistoryRemote

        java:module/ProductionHistoryBean!navi.ejb3.production.history.Productio

nHistoryRemote

        java:jboss/exported/navi-ejb3/ProductionHistoryBean!navi.ejb3.production

.history.ProductionHistoryRemote

        java:global/navi-ejb3/ProductionHistoryBean

        java:app/navi-ejb3/ProductionHistoryBean

        java:module/ProductionHistoryBean