0

This is my session handler class:

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);
  }

}

.. and this is my 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;
  }
}

The error is: When SessionListener initializes it's @ManagedProperty, null is injected because sessionCount is not created yet. How can I solve this? On the other hand if I put sessionCount field in SessionListener class and make SessionListener class an @ApplicationScoped bean, I cant access it via #{applicationContext.listenerBean.active}.

The actual question here is: if a class is HttpSessionlistener instance we cant use it as an application context object? Is it true

Manuel
  • 3,828
  • 6
  • 33
  • 48
daemonThread
  • 243
  • 2
  • 12

0 Answers0