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

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

この規則は、weblogic-ejb-jar.xml ファイルで検出される EJB ローカル参照にフラグを立てます。ソース・スキャナーでは、クイック・フィックスが提供されます。クイック・フィックスが適用された後、WebLogic XML には、マイグレーション済みであることを示すコメントによってマークが付けられます。このコメントは、クイック・フィックスを実行するかどうかを判別するのに使用され、またマイグレーション終了時にマイグレーション済みの XML ファイルがどれだけあるかを示すのに使用できます。

クイック・フィックスが適用されると、JNDI 名が weblogic-ejb-jar.xml ファイルから WebSphere traditional および Liberty 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 名が 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>

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

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

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