Licznik aktywnych sesji w JSP

0

Witam,

Mam problem z utworzeniem licznika sesji w JSP. Jako licznik służy mi klasa implementująca HttpSessionListener:

public class Counter implements HttpSessionListener {
    private static int counter = 0;
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        counter++;
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        counter--;
    }

    public static int getCounter() {
        return counter;
    }
}

W pliku .jsp wyświetlam licznik instrukcją <%= Counter.getCounter() %>. Plik web.xml również zawiera wpis o listenerze.

Niestety, mam pewien problem - po uruchomieniu serwera pojawiają się różne wartości - raz wyświetla się 0, raz 1; raz udało mi się nawet uzyskać wartość -1. Docelowo zawsze powinna być wyświetlana wartość 1.

Wiem, że jsp tworzy dla każdego połączenia swoją sesję (chyba chodzi o kontener). Nie wiem tylko czemu raz ta sesja "jest", a raz jej "nie ma".

Co pominąłem po drodze? Jak wykorzystać klasę nasłuchującą, aby osiągnąć pożądany rezultat?

Pozdrawiam,
Marcin

0

Cały czas wyświetla mi się 0.. Co miałby zmienić AtomicInteger?

public class Counter implements HttpSessionListener {
    private static AtomicInteger licznik = new AtomicInteger(0);

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        licznik.getAndIncrement();
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        licznik.getAndDecrement();
    }


    public static int getLicznik() {
        return licznik.get();
    }
}

//EDIT
Od razu po odpaleniu glassfisha pokazuje mi 1, jak zatrzymam serwer i włączę znów to mam 0 :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1