我必须在我的耳朵应用程序中使用jboss共享库中存在的应用程序范围的cdi bean。
示例:
jboss\modules\com\test\test.jar
在test.jar中我有一个应用程序范围的bean
@ApplicationScoped
public class Test {
@Inject
SomeClass someClass;
@PostConstructor
public void init() {
someClass.doSomething();
}
public void testMethod() {
}
}
myapp.ear→ejb.jar
在ejb.jar中,我有一个初始化Test应用程序作用域bean的类。
public class Another {
@Inject
Test test;
public void myMethod() {
test.testMethod();
}
}
当我测试这个例子时,我会得到空指针异常,因为我试图注入一个在耳朵应用程序外面的应用程序范围的bean。
注意:我的ear lib目录中没有test.jar,根据我的要求,它将作为jboss共享库提供。
如何访问应用程序范围的bean?
答案 0 :(得分:0)
将beans.xml添加到test.jar的META-INF目录中。在这种情况下,容器将扫描test.jar文件以获取CDI bean。 你得到NPE也很奇怪。如果没有找到注入的bean,你会得到“不满意的依赖”。可能你错误地实例化了测试bean。例如,通过New运算符。