How to specify a different jndi-name than the defa

2019-05-16 21:48发布

问题:

By default it seems the jndi name of a bean is based on the ear in which it is contained. An EJB named MyBean my-app.ear will have the name "my-app/MyBean/local".

How can I change that behavior declaratively? I want the jndi name to be "something-else/MyBean/local". It has to be declarative rather than with an annotation b/c I can't modify the source of MyBean.java; I only have the jar, which I am packaging into an ear for deployment.

回答1:

You can provide this in jboss.xml

http://docs.jboss.org/ejb3/app-server/reference/build/reference/en/html/jboss_deployment_descriptor.html

jndi-name element is what you want.

Example:

<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>


回答2:

I'm not au fait with EJB3 (it's too little too late as far as I'm concerned), but with EJB2 you can do this by modifyig the jboss.xml descriptor that goes inside the EJB JAR's META-INF. Specifically, you modify the element of the EJB definition.

If this doesn't apply to EJB3 (and I realise that EJB3 is descriptor-lite), my apologies, please don't down-vote me :)