Listenery HTTP

Autor: Marcin Kasiński
21.01.2011 13:24:00 +0200

HttpSessionListener

Jest to listener związany z sesją HTTP. Pozwala on na wykonywanie dowolnych operacji, które będą trigerowane przy operacjach związanych z sesja HTTP, takich jak utworzenie, czy tez usuniecie sesji. Aby we własnej aplikacji mieć możliwość wykorzystania tej funkcjonalności należy utworzyć klasę implementującą interfejs HttpSessionListener. Interfejs HttpSessionListener posiada dwie metody, które w naszej klasie musza być zaimplementowane:

  • sessionCreated(HttpSessionEvent event)metoda ta jest wywoływana za każdym razem, kiedy tworzona jest sesja HTTP
  • sessionDestroyed(HttpSessionEvent event)metoda ta jest wywoływana za każdym razem, kiedy sesja HTTP jest usuwana

Metody te jako parametr przyjmuje klasę HttpSessionEvent. Z obiektu tego następnie można pobrać obiekt sesji, której zdarzenie dotyczy.

HttpSession session=event.getSession()

Po przygotowaniu takiej klasy będącej listenerem należy w deskryptorze (pliku web.xml) poinformować, że w aplikacji wykorzystujemy listenera. Dokonujemy tego poprzez umieszczenie w nim wewnątrz bloku web-app kolejnego wpisu o strukturze listener /listener-class, gdzie listener-class wskazuje na nazwę klasy wraz z pakietem. Przykład takiego wpisu może mieć postać :

<web-app id="WebApp">
<display-name>MyWebApp</display-name>
<listener>
<listener-class>testapp.MySessionListener
</listener-class></listener>
...
</web-app>

Najczęstszym zastosowaniem tego listenera jest wykorzystanie drugiej z tych metod w celu usunięcia z systemu pozostałości po kliencie, którego sesja właśnie wygasła. Jeśli np. w trakcie pracy aplikacji w bazie danych przechowujemy jakieś dane tymczasowe, to wskazane jest, aby po zakończeniu pracy klienta wskazane jest, aby skasować z bazy dane skojarzone z jego sesja.

ServletContextListener

Jest to listener związany z kontekstem aplikacji. Pozwala on na wykonywanie operacji, które będą trigerowane podczas działań związanych z uruchomieniem i zatrzymaniem aplikacji WWW. Interfejs ServletContextListener posiada dwie metody, które musi posiadać klasa go implementująca.

  • contextInitialized(ServletContextEvent event)metoda ta jest wywoływana podczas uruchamiania aplikacji
  • contextDestroyed(ServletContextEvent event)metoda ta jest wywoływana podczas uruchamiania aplikacji

Listener ten najczęściej jest używany, kiedy w aplikacji webowej wywoływane są metody nie poprzez interakcje z użytkownikiem, tylko np. co określony czas. W takim przypadku w metodzie contextInitialized możemy utworzyć własny watek, w którym operacje takie są wykonywane. Inne sposoby utworzenia takiego wątku (np. w serwlecie) nie są zalecane w specyfikacji JEE.


powrót
Zachęcam do przedstawienia swoich uwag i opinii w polu komentarzy.

Komentarze

Dodaj Komentarz