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

Le descripteur de déploiement spécifique à JBoss pour les EJB, jboss.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 migrer vers le fichier de liaison de WebSphere Application Server.

Cette règle marque les références locales EJB détectées dans le fichier jboss.xml, si le correctif rapide correspondant dans le scanner de source n'a pas encore été appliqué. Après l'application d'un correctif rapide, un commentaire est ajouté au code XML JBoss pour indiquer qu'il a été migré. Ce commentaire permet de déterminer s'il faut 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 jboss.xml dans le fichier de liaison EJB de WebSphere. Dans l'exemple suivant, MyBean2 définit une référence à MyBean. Tout d'abord, <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 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>

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");