【发布时间】:2012-11-29 10:06:42
【问题描述】:
在 JBoss AS7 上运行,我有这个:
import javax.inject.Singleton;
@Singleton
public class Connections {
private final List<AtmosphereResource> connections = new ArrayList<AtmosphereResource>();
public void add(AtmosphereResource event) {
connections.add(event);
}
}
还有这个:
import javax.inject.Inject;
public class PubSubAtmosphereHandler extends AbstractReflectorAtmosphereHandler {
@Inject
private Connections connections;
@Override
public void onRequest(AtmosphereResource event) throws IOException {
[...]
connections.add(event); // <---
}
NPE 在指定行上。在阅读了无数页和示例之后,这是重复数十次但不起作用的方法之一。我有空的 beans.xml,放在我的 WEB-INF 中。我在这里错过了什么?
【问题讨论】:
-
pubsubhandler 是否由容器管理?
-
你是在问它是否用 @ManagedBean 装饰?如果是这样,我尝试了有和没有都无济于事。如果你的意思是别的,你必须详细说明一下。
-
我不确定,这发生在 Atmosphere 库中。我只在大气.xml 中指定该类,然后请求进来。对于它的价值,原始请求是一个打开comet/websocket 连接的GET http 请求,而这个类是接受该请求和文件的类将其用于以后的服务器推送。
-
问题很可能是处理程序不是容器管理的,所以不会发生注入。
-
有没有办法解决这个问题?我不介意拥有某种代理类。还是处理程序的初始实例化形式就像毒树一样,我在那里所做的一切都会遇到同样的问题?
标签: java jakarta-ee singleton jboss7.x cdi