Usar ligações do WebSphere para definir os nomes JNDI de referência local

O descritor de implementação específico do JBoss para EJBs, jboss.xml, pode conter nomes JNDI para referências locais EJB definidas em ejb-jar.xml. Essas referências mapeiam uma referência local EJB para seu nome JNDI. Para que essas referências funcionem corretamente no WebSphere Application Server, as informações devem ser movidas para o arquivo de ligações do WebSphere Application Server.

Essa regra sinalizará referências locais EJB localizadas no arquivo jboss.xml, se a correção rápida correspondente no scanner de origem ainda não tiver sido aplicada. Depois de uma correção rápida ser aplicada, o XML do JBoss será marcado com um comentário indicando que ele foi migrado. Isso é utilizado para determinar se a correção rápida deve ser executada, e se ela pode ser utilizada no final da migração para indicar quanto do arquivo XML foi migrado.

Quando a correção rápida for aplicada, o nome JNDI será copiado do arquivo jboss.xml para o arquivo de ligações EJB do WebSphere. Por exemplo, o exemplo a seguir mostra MyBean2 definindo uma referência para MyBean. Primeiro, a <ejb-local-ref> é definida no arquivo 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>

Em seguida, o nome JNDI <ejb-local-ref> correspondente é definido no arquivo 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>

A correção rápida inclui o nome JNDI ejb.MyBean no arquivo de ligações e o associa à referência local ejb/MyBean para MyBean2. Se o arquivo de ligação não existir, um novo será criado.

No código Java, o contexto de nomenclatura pode ser referenciado no seguinte exemplo:

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