如何为JBoss 4.2.2.GA中的EJB指定不同于默认值的jndi名称?

如何为JBoss 4.2.2.GA中的EJB指定不同于默认值的jndi名称?,jboss,ejb-3.0,jndi,Jboss,Ejb 3.0,Jndi,默认情况下,bean的jndi名称似乎基于包含它的ear。名为MyBean my-app.ear的EJB将具有名称“my-app/MyBean/local” 我如何以声明的方式改变这种行为?我希望jndi名称为“something other/MyBean/local”。它必须是声明性的,而不是带有注释的b/c,我不能修改MyBean.java的源代码;我只有jar,我正在将其打包到ear中进行部署。我不太熟悉EJB3(就我而言,这太晚了),但是对于EJB2,您可以通过修改EJB jar MET

默认情况下,bean的jndi名称似乎基于包含它的ear。名为MyBean my-app.ear的EJB将具有名称“my-app/MyBean/local”

我如何以声明的方式改变这种行为?我希望jndi名称为“something other/MyBean/local”。它必须是声明性的,而不是带有注释的b/c,我不能修改MyBean.java的源代码;我只有jar,我正在将其打包到ear中进行部署。

我不太熟悉EJB3(就我而言,这太晚了),但是对于EJB2,您可以通过修改EJB jar META-INF中的jboss.xml描述符来实现这一点。具体来说,您可以修改EJB定义的元素


如果这不适用于EJB3(我意识到EJB3是描述符lite),我很抱歉,请不要否决我:)

您可以在jboss.xml中提供

jndi名称元素就是您想要的

例如:

<jboss>
   <enterprise-beans>
      <service>
         <ejb-class>org.jboss.ejb3.test.service.ServiceSix</ejb-class>
         <local>org.jboss.ejb3.test.service.ServiceSixLocal</local>
         <remote>org.jboss.ejb3.test.service.ServiceSixRemote</remote>
         <management>org.jboss.ejb3.test.service.ServiceSixManagement</management>
         <jndi-name>serviceSix/remote</jndi-name>
         <local-jndi-name>serviceSix/local</local-jndi-name>
      </service>
   </enterprise-beans>
</jboss>

org.jboss.ejb3.test.service.ServiceSix
org.jboss.ejb3.test.service.ServiceSixLocal
org.jboss.ejb3.test.service.ServiceSixRemote
org.jboss.ejb3.test.service.ServiceSixManagement
服务六/远程
服务六/本地