这是我的会话处理程序类:
public class Sessionlistener implements HttpSessionListener {
@ManagedProperty(value="#{sessionCount}")
private SessionInfo info;
@Override
public void sessionCreated(HttpSessionEvent event) {
info.setActive(info.getActive() + 1);
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
info.setActive(info.getActive() - 1);
}
}
..这是我的 sessionCount bean:
@ApplicationScoped
@ManagedBean(name="sessionCount",eager=true)
public class SessionInfo {
private int active = 0;
@PostConstruct
public void init() {
System.out.println("sessionCount object created");
}
public void setActive(int active) {
this.active = active;
}
public int getActive() {
return active;
}
}
错误是:当SessionListener
初始化它时@ManagedProperty
,由于尚未创建而null
被注入。sessionCount
我该如何解决这个问题?另一方面,如果我将sessionCount
字段放入SessionListener
类中并使SessionListener
类成为@ApplicationScoped
bean,则无法通过#{applicationContext.listenerBean.active}
.
这里的实际问题是:如果一个类是HttpSessionlistener
实例,我们不能将它用作应用程序上下文对象吗?是不是真的