ローカル JNDI 名を使用しない

WebLogic および JBoss アプリケーション内で、<local-jndi-name> エレメントは、グローバル JNDI ツリー内の Bean のローカル・ホームの JNDI 名を定義します。これは、weblogic-ejb-jar.xml ファイルまたは jboss.xml ファイル内で定義されます。

WebSphere(R) では、グローバル JNDI ツリー内の JNDI 名に対するローカル・ホームのマッピングを行うことができません。代わりに、これらはローカル・コンテナーの JNDI ツリー内にマップされます。このため、プログラマーは、グローバル名前空間の JNDI 名ではなく、ローカル名前空間の JNDI 参照を使用して、ローカル・エンタープライズ Bean にアクセスしなければなりません。

このルールは、<local-jndi-name> 要素が weblogic-ejb-jar.xml または または jboss.xml に見つかった場合にトリガされます。 自動修正により、 Java ファイル、デプロイメント記述子、およびバインディングが処理され、これらの参照が.xml 上で動作するようになります。 参照が WebSphere で動作するように処理されます。

<local-jndi-name> エレメントがあるアプリケーションに関連したパッケージがすべて処理されます。アプリケーション EAR プロジェクトがないか、見つかった EJB プロジェクトに関連付けられていない場合は、EJB プロジェクトのみが処理されます。関連したプロジェクトが正しく定義されている必要があります。

自動修正プログラムが利用可能になり適用されると、アプリケーション内のすべての Java ファイルをスキャンします。 <local-jndi-name>が見つかったアプリケーションのすべての ファイルをスキャンします。 ローカル JNDI 名の直接コンテキスト・ルックアップと、この名前への EJB 参照のルックアップがスキャンされます。

例えば、ローカル JNDI 名が次のようになっているとします。 ejb/myBeanLocalHome 以下のコード例は、コード、デプロイメント記述子、バインディング、またはその両方に対する更新をトリガーします。

Java ルックアップの例:

ctx.lookup("ejb/myBeanLocalHome");

ctx.lookup("java:comp/ejb/myBeanLocalHome");

ctx.lookup(myBeanLocalHomeNameVariable);

最初の例では、 Java コードが以下のように変更されています。 ctx.lookup("java:comp/ejb/myBeanLocalHome") そのため EJB参照ルックアップが行われるようにする。 他の 2 つの Java の例は変更されません。 この3つのケースでは、自動修正によってプロジェクトのデプロイメント記述子とバインディングが更新される。

プロジェクトで特定のローカル JNDI 名に対するルックアップが検出される場合や、変数が使用されていてルックアップを判別できない場合は、web.xml ファイルまたは ejb-jar.xml ファイルを変更して、ローカル JNDI 名を定義した Bean に <ejb-local-ref> を組み込みます。EJB プロジェクトの場合は、ejb-jar.xml 内で定義されている各 Bean に <ejb-local-ref> エレメントが追加されます。web.xml ファイルの場合は、ローカル JNDI 名を定義している Bean について 1 つの参照が追加されます。両方の場合とも、プロジェクトのバインディング・ファイルに <ejb-local-ref> JNDI 名が追加されます。