Binding java代码中的Ejb jndi绑定

Binding java代码中的Ejb jndi绑定,binding,ejb,jndi,local,jboss-eap-6,Binding,Ejb,Jndi,Local,Jboss Eap 6,该方法正在加载一个bean Context ctx = new InitialContext(); Object lookupResult = ctx.lookup("abilitecConsumerClient/local"); 还有一节课 @Stateless @LocalBinding(jndiBinding="abilitecConsumerClient/local" ) @Local() 什么确切地代表了AbiliteconsumerClient/local?这是我需要在本地计算机

该方法正在加载一个bean

Context ctx = new InitialContext();
Object lookupResult = ctx.lookup("abilitecConsumerClient/local");
还有一节课

@Stateless
@LocalBinding(jndiBinding="abilitecConsumerClient/local" )
@Local()
什么确切地代表了AbiliteconsumerClient/local?这是我需要在本地计算机中查找此属性文件的路径,还是需要它为此EJB JNDI绑定名称加载的文件

如果您还可以提供如何在JBoss EAP 6中指定自定义EJB JNDI绑定名称的信息


此应用程序将在JBOSS EAP 6上运行。

根据以前的说明:

…当应用程序部署在.jar中时,对于本地接口,会话bean将以(…)ejbName/local的形式绑定到JNDI。当EJB部署在.ear文件中时,默认的JNDI绑定将以.ear文件的名称作为前缀

因此,如果我们有一个名为foo.EAR的EAR文件,那么默认的JNDI名称将是foo/EJB-name/local

可以通过在bean上定义自己的
@LocalBinding
注释来覆盖此行为

通过,注释
@LocalBinding
指定EJB本地接口的本地JNDI绑定

这意味着在
@LocalBinding
上传递的元素
jndiBinding
的值表示与bean关联(绑定)的名称,该bean是放置注释的位置

然后,这允许我们通过使用
@LocalBinding
注释上定义的
jndiBinding
在JNDI上查找bean实例来检索bean实例,如您所述:

MyBean bean = ctx.lookup("abilitecConsumerClient/local");
现在关于你的最后一个问题,请注意,在我回答的开头,我说了……旧的JBoss文档。。。。为什么?因为自从JBoss EAP 6()以来,或都不再允许将EJB绑定到自定义JNDI名称

人们可能会认为这是由于JavaEE6努力标准化EJB名称空间

您可以更仔细地了解JBoss EAP 6的现状,其中EJB3.1引入了一个标准化的全局JNDI名称空间和一系列映射到JavaEE应用程序各个范围的相关名称空间

将之前的EAP 6与之后的EAP 6进行比较,我们有:

在EAP 6之前

EAP 6之后

最后,您可以找到更多关于如何在上执行EJB查找的示例,并仔细查看以下内容:

  • 的“早期版本中JNDI映射的示例以及它们现在的外观”一节

谢谢@阿里贝罗,这对我来说是非常有用的信息。我的另一个问题。我也有下面的结构,但不确定这个路径cwraper/env/CClient/webservice代表什么?Context initialContext=新的initialContext();服务服务=(服务)initialContext.lookup(“CWrapper/env/CClient/webservice”);你能告诉我你的想法/信息吗?泰@aribeiro@docaUS,这类似于您之前提出的问题:“path”是与bean服务关联的JNDI资源名称。但是,由于JBoss EAP 6,不再允许将EJB绑定到自定义JNDI名称。服务类是如何定义的?它是javax.xml.rpc.Service的一个接口类。它从那里调用,执行
(服务)initialContext.lookup(“CWrapper/env/CClient/webservice”)您只是获得了JAX-RPCWeb服务工厂的引用。
// Bean definition
@Stateless
@LocalBinding(jndiBinding="custom/MyBean")
public class MyBeanImpl implements MyBean {
    (...)
}

// look-up
ctx = new InitialContext();
MyBean myBean = (MyBean) ctx.lookup("custom/MyBean");
// Bean definition
@Stateless
@Local(MyBean.class)
public class MyBeanImpl implements MyBean {
    (...)
}

// look-up
MyBean myBean = (MyBean)
     InitialContext.lookup("java:module/MyBean");

// or through injection
@EJB
MyBean myBean;