默认情况下,bean 的 jndi 名称似乎基于包含它的耳朵。名为 MyBean my-app.ear 的 EJB 将具有名称“my-app/MyBean/local”。
如何以声明方式更改该行为?我希望 jndi 名称为“something-else/MyBean/local”。它必须是声明性的,而不是带有注释 b/c 我无法修改 MyBean.java 的源;我只有一个罐子,我将它包装到耳朵中以进行部署。
你可以在 jboss.xml 中提供这个
jndi-name 元素就是你想要的。
例子:
<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>
我对 EJB3 不是很熟悉(就我而言,这太迟了),但是使用 EJB2,您可以通过修改 EJB JAR 的 META-INF 中的 jboss.xml 描述符来做到这一点。具体来说,您修改 EJB 定义的元素。
如果这不适用于 EJB3(并且我意识到 EJB3 是描述符精简版),我很抱歉,请不要对我投反对票 :)