3
votes

How do I get the number of active sessions in Xpage. I'm trying to use managed beans but it just returns a weird string. Here's the simple code:

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionCounterListener implements HttpSessionListener {

  private static int totalActiveSessions;

  public static int getTotalActiveSessions(){
    return totalActiveSessions;
  }

  public void sessionCreated(HttpSessionEvent arg0) {
    totalActiveSessions++;
    System.out.println("sessionCreated - add one session into counter");
  }

  public void sessionDestroyed(HttpSessionEvent arg0) {
    totalActiveSessions--;
    System.out.println("sessionDestroyed - deduct one session from counter");
  } 
}

I got this from here. But when I call SessionCounterListener.getTotalActiveSessions(), it only returns 0 (regardless if someone is logged in).

If you have the time, you can check out my test database here.

Please help me. Thanks a lot!

1
probably you call it wrong way, it seems you omitted parentheses.Frantisek Kossuth
What is the point to return "int | 0" in Java? It is not a JavaScript. A|false = A.Frantisek Kossuth
How do you injected the class in the application? Just creating this class is not enough. Creating a Web.xml in the NSF won't work, it will be ignored.Sven Hasselbach
I used it as a managed bean. I then add an entry in the faces-config.xml.John Bautista

1 Answers

6
votes

A session listener must be injected in the application to get working as desired. Otherwise the sessionCreated/sessionDestroyed methods will never be called and 0is returned always. But there are some differences between XPages and "traditional" JSF. Have a look here:

http://www.openntf.org/projects/pmt.nsf/66d9103768cc2fed85256c59006b5433/00a38cdf382f4893862578b80082dd15!OpenDocument

Or have a look inside the XSP Starterkit.

EDIT:

To add a session Listener, do the following:

  1. Switch to java perspective
  2. In the "Code/Java" folder, create a folder "META-INF"
  3. In this META-INF folder, create a folder "services"
  4. In the "services" folder create a file named "com.ibm.xsp.core.events.SessionListener"
  5. In this file, add the full name of your class: package.SessionCounterListener

Now, the session listener should be activated.