0

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

4

1 回答 1

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(Verbose JVM 类加载)选项。

于 2013-06-10T19:13:33.457 回答