¿Cómo especificar un nombre jndi diferente al predeterminado para un EJB en JBoss 4.2.2.GA?
Pregunta
Por defecto parece que el nombre jndi de un bean se basa en la oreja en la que está contenido. Un EJB llamado MyBean my-app.ear tendrá el nombre "my-app / MyBean / local".
¿Cómo puedo cambiar ese comportamiento declarativamente? Quiero que el nombre de jndi sea '' algo más / MyBean / local ''. Tiene que ser declarativo más que con una anotación b / c. No puedo modificar la fuente de MyBean.java; Solo tengo el frasco, que estoy empaquetando en una oreja para su implementación.
Solución
Puede proporcionar esto en jboss.xml
elemento jndi-name es lo que quieres.
Ejemplo:
<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>
Otros consejos
No estoy de acuerdo con EJB3 (es demasiado poco tarde para mí), pero con EJB2 puede hacerlo modificando el descriptor jboss.xml que se encuentra dentro del META-INF de EJB JAR. Específicamente, modifica el elemento de la definición EJB.
Si esto no se aplica a EJB3 (y me doy cuenta de que EJB3 es descriptor-lite), mis disculpas, por favor no me voten :)