Utiliser des liaisons WebSphere pour définir les noms JNDI des références locales EJB

Le descripteur de déploiement spécifique à WebLogic pour les EJB, weblogic-ejb-jar.xml, peut contenir des noms JNDI pour les références locales EJB définies dans ejb-jar.xml. Ces références associent une référence locale EJB à son nom JNDI. Pour que ces références fonctionnent correctement dans WebSphere Application Server, leurs données doivent être transférées dans le fichier de liaison de WebSphere Application Server.

Cette règle marque les références locales EJB trouvées dans le fichier weblogic-ejb-jar.xml. Un correctif rapide est fourni dans le scanner de source. Une fois le correctif rapide appliqué, un commentaire est ajouté au code XML WebLogic pour indiquer qu'il a été migré. Ce commentaire permet de déterminer s'il convient d'exécuter le correctif rapide et vous pouvez l'utiliser à la fin de la migration pour indiquer la proportion du fichier XML qui a été migrée.

Lorsque le correctif rapide est appliqué, le nom JNDI est copié du fichier weblogic-ejb-jar.xml dans le fichier de liaisons EJB de WebSphere Traditional et Liberty. Dans l'exemple suivant, MyBean2 définit une référence à MyBean. Pour commencer, le code <ejb-local-ref> est défini dans le fichier 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>

Ensuite, le nom JNDI <ejb-local-ref> correspondant est défini dans le fichier weblogic-ejb-jar.xml :


<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>MyBean</ejb-name>
<jndi-name>ejb.MyBean</jndi-name>
</weblogic-enterprise-bean>
<weblogic-enterprise-bean>
<ejb-name>MyBean2</ejb-name>
<ejb-local-reference-description>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<jndi-name>ejb.MyBean</jndi-name>
</ejb-local-reference-description>
<jndi-name>ejb.MyBean2</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

Le correctif rapide ajoute le nom JNDI ejb.MyBean au fichier de liaison et l'associe à la référence locale ejb/MyBean pour MyBean2. S'il n'existe pas de fichier de liaison, le système en crée un.

Dans le code Java, le contexte d'affectation de nom peut être référencé comme dans l'exemple suivant :

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