我有一个问题,就是将一个普通的java类(Pojo类)注入EJB bean。
@ApplicationScoped
public class DomainRouteFinderService {
@Inject
private Pojo pojo;
private AtomicInteger sequencer;
@PostConstruct
private void init(){
sequencer = new AtomicInteger();
sequencer.lazySet(0);
}
@Produces
@Named("sequencer")
public String getText(){
return "Number: "+ sequencer.getAndIncrement();
}
}
Pojo课程:
public class Pojo {
}
在我的多项目中,结构如下:
ROOT - 耳朵
Web模块依赖于ejb。
在web模块中是beans.xml,其中bean-discovery-mode =“all”
答案 0 :(得分:-1)
我通过向ejb添加另一个beans.xml来解决我的问题。 我把这个文件 main / java / resources / META-INF本地化。
为什么?
CD 1.1 / Java EE 7中最重要的变化之一就是 流行的请求,CDI现在默认启用。这意味着 没有必要显式添加beans.xml来启用DI。 但是,现在理解CDI也非常重要 通过提供更精细的组件扫描控制 '豆发现模式'属性。该属性有三种可能 值:
'annotated' - loosely translated, means that only components with a class-level annotation are processed. 'all' - all components are processed, just like they were in Java EE 6 with the explicit beans.xml. 'none' - CDI is effectively disabled.
默认情况下,如果您没有指定任何内容,并且没有beans.xml,则为bean 发现模式的注释'而不是所有的'假定。
但我想为ejb模块和war模块提供一个beans.xml。