2012-01-10 9 views
6

Implementuję niestandardowy ServletContextListener i umieszczam punkty przerwania zarówno na contextInitialized() i .Debug ServletContextListener.contextDestroyed() poprzez ustawienie punktu zrywania w środowisku Eclipse

Po uruchomieniu aplikacji internetowej przy użyciu WTP, contextInitialized() może zostać zatrzymany przez debugger. Ale po zamknięciu aplikacji internetowej punkty przerwania w contextDestroyed() nie działają, a aplikacja internetowa po prostu się wyłącza. Czy jest to możliwe i jak używać debuggera do debugowania contextDestroyed() w środowisku Eclipse?

Chcę sprawdzić, czy użyty zasób może zostać poprawnie zwolniony podczas zamykania aplikacji internetowej.

+0

Czy próbowałeś stworzyć nowy pusty projekt webapp i spróbuj debugować contextDestroyed? – ozhan

Odpowiedz

12

contextDestroyed() zostanie wywołana tylko wtedy, gdy z gracją wyłącza serwer otwierając serwerów widok i rightclicking instancję serwera i wybierając Zatrzymaj, albo przez naciśnięcie czerwonego przycisku w Serwery widok którego etykietka mówi Zatrzymaj serwer.

Będzie nie nazwać kiedy zakończyć serwer całkowicie przez naciśnięcie czerwonego przycisku w Console widzenia którego etykietka mówi Zakończyć. Zakończenie (zabijanie) to nie to samo co zatrzymanie.

+0

Balusc: Ponieważ kod w procedurze contextDestroyed() nie jest wykonywany z powodu zakończenia (zabicia), czy wszystkie obiekty, które są inicjowane w metodzie contextInitialized(), zostaną zniszczone? – srk