SessionListener和Application Context冲突

时间:2013-04-07 07:27:29

标签: java java-ee jsf-2 el managed-bean

这是我的会话处理程序类:

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实例,我们不能将它用作应用程序上下文对象?是真的

0 个答案:

没有答案