更改websphere 7类加载器后,从ejb-jar注入的资源消失了

时间:2013-06-10 09:03:25

标签: ejb websphere classloader

我正在websphere 7上配置一个ejb模块,我需要将我的类加载器设置为PARENT_LAST,以确保我没有遇到类错误版本的任何类加载器问题。 奇怪的是,当我将类加载器更改为PARENT_LAST时,我的ejb @Resource注释不再注入我的资源(在ejb-jar.xml中定义)。我用@Resource注释的所有字段都是null。

1 个答案:

答案 0 :(得分:2)

我怀疑你的应用程序包含一个包含javax.annotation.Resource类的JAR。 PARENT_LAST设置导致类加载器更喜欢您的Resource类而不是JDK中的类,这意味着WebSphere Application Server注入引擎永远不会看到您的Resource注释。您应该从您的应用程序中删除该JAR。

如果要验证,请尝试在NPE发生之前将以下逻辑添加到您的应用程序中:

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

...或在服务器JVM中启用-verbose:class(详细JVM类加载)选项。