Licznik aktywnych sesji w JSP

Licznik aktywnych sesji w JSP
SZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Witam,

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

Kopiuj
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

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
SZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

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

Kopiuj
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 :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.