0

Websphere 7 で ejb モジュールを構成しています。間違ったバージョンのクラスでクラスローダーの問題が発生しないように、クラスローダーを PARENT_LAST に設定する必要があります。奇妙なことに、クラスローダーを PARENT_LAST に変更すると、ejb @Resource アノテーションがリソース (ejb-jar.xml で定義されている) を注入しなくなります。@Resource で注釈が付けられたすべてのフィールドが null です。

4

1 に答える 1

2

あなたのアプリケーションには、javax.annotation.Resource クラスを含む JAR が含まれていると思われます。PARENT_LAST 設定により、クラス ローダーは JDK のリソース クラスよりもリソース クラスを優先するようになります。つまり、WebSphere Application Server インジェクション エンジンはリソース アノテーションを認識しません。その JAR をアプリケーションから削除する必要があります。

確認したい場合は、NPE が発生する前に次のロジックをアプリケーションに追加してみてください。

System.out.println(Resource.class.getProtectionDomain().getCodeSource().getLocation());

...または-verbose:class、サーバー JVM で (Verbose JVM class loading) オプションを有効にします。

于 2013-06-10T19:13:33.457 に答える