Question

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.

Was it helpful?

Solution

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>

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top