EJB ローカル参照 JNDI 名の定義に WebSphere バインディングを使用する

EJB の JBoss 固有のデプロイメント記述子 jboss.xml に、 ejb-jar.xml で定義された EJB ローカル参照の JNDI 名が含まれることがあります。 これらの参照は EJB ローカル参照をその JNDI 名にマップします。 WebSphere Application Server 上でこれらの参照が正しく作動するには、情報を WebSphere Application Server のバインディング・ファイルに移動しなければなりません。

この規則により、ソース・スキャナー内の対応するクイック・フィックスがまだ適用されていない場合に、jboss.xml ファイルにある EJB ローカル参照にフラグを立てます。クイック・フィックスの適用後、マイグレーション済みであることを示すコメントを使用して JBoss XML にマークが付けられます。 このコメントは、クイック・フィックスを実行するかどうかを判別するのに使用され、またマイグレーション終了時にマイグレーション済みの XML ファイルがどれだけあるかを示すのに使用できます。

クイック・フィックスが適用されると、JNDI 名が jboss.xml ファイルから WebSphere EJB バインディング・ファイルにコピーされます。 例えば、以下の例では、MyBean への参照を定義している MyBean2 を示しています。 まず、ejb-jar.xml ファイルで <ejb-local-ref> が定義されます。

<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>

次に、対応する <ejb-local-ref> JNDI 名が 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>

クイック・フィックスでは、ejb.MyBean という JNDI 名をバインディング・ファイルに追加し、 MyBean2ejb/MyBean というローカル参照と関連付けます。 バインディング・ファイルがない場合は作成されます。

Java コード内で、ネーミング・コンテキストは、次の例のようにして参照できます。

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