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 名をバインディング・ファイルに追加し、
MyBean2 の ejb/MyBean というローカル参照と関連付けます。
バインディング・ファイルがない場合は作成されます。
Java コード内で、ネーミング・コンテキストは、次の例のようにして参照できます。
|
javax.naming.Context ctx = new javax.naming.InitialContext(); Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean"); |