Java CDI-将SessionBean注入ServletContextListener触发的服务
我有一个Java CDI-将SessionBean注入ServletContextListener触发的服务,java,dependency-injection,jboss7.x,cdi,servletcontextlistener,Java,Dependency Injection,Jboss7.x,Cdi,Servletcontextlistener,我有一个ServletContextListener实现,它调用一些bean。我试图将会话bean注入到该bean中,但注入的会话bean始终为null 是否在执行期间,ServletContextListener尚未启动BeanManager?CDI和侦听器是否存在已知的限制?还是我的代码中遗漏了什么 下面是我尝试注入的SessionBean的定义- @Stateless @Local(MetricStubSessionLocal.class) @Remote(MetricStubSessio
ServletContextListener
实现,它调用一些bean。我试图将会话bean注入到该bean中,但注入的会话bean始终为null
是否在执行期间,ServletContextListener
尚未启动BeanManager
?CDI和侦听器是否存在已知的限制?还是我的代码中遗漏了什么
下面是我尝试注入的SessionBean的定义-
@Stateless
@Local(MetricStubSessionLocal.class)
@Remote(MetricStubSessionRemote.class)
public class MetricStubSessionBean implements MetricStubSessionLocal,
MetricStubSessionRemote {
...
}
这是我要注入的豆子-
public class MetricStubGeneratorJob implements IdpTimer {
@Inject
private MetricStubSession metricStubSession;
private TimerStatus status;
public MetricStubGeneratorJob() {
super();
}
public MetricStubGeneratorJob(TimerStatus status) {
this.status = status;
}
...
}
提前谢谢 您应该在bean中注入本地接口:
@inject private matricsubsessionlocal metricStubSession代码>谢谢,但不幸的是,这不起作用。无论如何,我的本地接口正在扩展MatricSubSession
…您的项目是如何结构的?您在EJBJAR中使用EAR部署会话bean,在WAR中使用ServletContextListener吗?您在JBoss server.log中看到了什么?如何将MetricStubGeneratorJob注入ServletContextListener?可能是因为在ServletContextListener执行期间BeanManager尚未启动-否,因为CDI在servlet上下文之前运行。@chearius我能够@将bean注入ServletContextListener
,但是当我尝试使用EntityManager
访问DB时,我在server.log:org.jboss.weld.context.ContextNotActivieException:weld-001303范围内没有活动上下文中得到此错误输入javax.enterprise.context.RequestScoped