Utilizar enlaces de WebSphere para definir nombres JNDI de referencia local de EJB

El descriptor de despliegue de JBoss para los EJB, jboss.xml, puede contener nombres JNDI para las referencias locales de EJB definidas en ejb-jar.xml. Estas referencias correlacionan una referencia local de EJB con su nombre JNDI. Para que estas referencias funcionen correctamente en WebSphere Application Server, se debe pasar información al archivo de enlaces de WebSphere Application Server.

Esta regla señala las referencias de EJB encontradas en el archivo jboss-web.xml, si aún no se ha aplicado el arreglo rápido correspondiente en el explorador de orígenes. Después de haber aplicado un arreglo rápido, el XML de JBoss se marca con un comentario que indica que se ha migrado. Esto se utiliza para determinar si se debe ejecutar el arreglo rápido y se puede utilizar al final de la migración para indicar en qué medida se ha migrado el archivo XML.

Cuando se aplica el arreglo rápido, el nombre JNDI se copia desde el archivo jboss.xml al archivo de enlaces EJB de WebSphere. Considere el ejemplo siguiente en el que MyBean2 define una referencia a MyBean. En primer lugar, se define <ejb-local-ref> en el archivo ejb-jar.xml:

<ejb-jar>
<enterprise-beans>
<session>
<display-name>MyBean</display-name>
<ejb-name>MyBean</ejb-name>
<home>com.ibm.ejb.MyBeanHome</home>
<remote>com.ibm.ejb.MyBean</remote>
<ejb-class>com.ibm.ejb.MyBeanBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<jndi-name>ejb.MyBean</ejb-name>
...
</session>
<session>
<display-name>MyBean2</display-name>
<ejb-name>MyBean2</ejb-name>
<home>com.ibm.ejb.MyBean2Home</home>
<remote>com.ibm.ejb.MyBean2</remote>
<ejb-class>com.ibm.ejb.MyBean2Bean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref>
<description></description>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.ibm.ejb.MyBeanHome</local-home>
<local>com.ibm.ejb.MyBean</local>
</ejb-local-ref>
<jndi-name>ejb.MyBean2</ejb-name>
...
</session>
<enterprise-beans>
<ejb-jar>

A continuación, se define el nombre JNDI correspondiente de <ejb-local-ref> en el archivo jboss.xml:


<jboss>
<enterprise-beans>
<session>
<ejb-name>MyBean</ejb-name>
<jndi-name>ejb.MyBean</jndi-name>
</session>
<session>
<ejb-name>MyBean2</ejb-name>
<jndi-name>ejb.MyBean2</jndi-name>
<ejb-local-ref>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<local-jndi-name>ejb.MyBean</jndi-name>
</ejb-local-ref>
</session>
</enterprise-beans>
</jboss>

El arreglo rápido añade el nombre JNDI ejb.MyBean al archivo de enlaces y lo asocia a la referencia local ejb/MyBean para MyBean2. Si el archivo de enlaces no existe, se crea uno.

Dentro del código Java, se puede referenciar el contexto de denominación como se muestra en el ejemplo siguiente:

javax.naming.Context ctx = new javax.naming.InitialContext();
Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean");