2011-12-30 11 views

Odpowiedz

12

... i powiązać inne odpowiedzi z działaniami środowisk Java Servlet;

Jeśli nie zadeklarujesz swoich wątków jako wątków demonów, sposobem sygnalizowania zamknięcia serwera wątkom jest zaimplementowanie ServletContextListener i skonfigurowanie go do swojej aplikacji internetowej (web.xml). Kiedy Tomcat się wyłączy, najpierw zamknie każdą aplikację, co z kolei spowoduje wywołanie metody detektora - i tam możesz zasygnalizować własne wątki, że powinni zakończyć swoją pracę.

+0

W każdym razie, aby dowiedzieć się, wątki, które powodują ten problem, byłoby mi pomocne, jak ja też trafienie tego problemu. – Azim

+0

Możesz użyć kill -3, jstack lub tomcat często zrzuca ślady stosu w catalina.out. – ticktock

6

Wszystkie wątki, które nadal są uruchomione, utrzymają proces Java (Tomcat) przy życiu. Upewnij się, że wszystkie wątki wychodzą. Po wyjściu wątków Tomcat będzie mógł się zamknąć.

Zobacz javadoc dla Thread. Zwrócić uwagę na następujące:

Java Virtual Machine kontynuuje wykonywanie wątki, aż jedna z poniższych sytuacji:

  • Sposób wyjścia z klasy Runtime zostało nazwane i kierownik bezpieczeństwa pozwolił operację wyjścia do zająć miejsce.
  • Wszystkie wątki, które nie są wątkami demona, zostały utracone, przez zwrot z wywołania metody uruchamiania lub przez zgłoszenie wyjątku propagującego poza metodę uruchamiania.
+0

Czy możesz zaproponować jakieś narzędzie, dzięki któremu możemy sprawdzić te wątki? – Azim

5

Trzeba anulować wątki, najlepiej poprzez wywołanie interrupt na nich i upewniając się, że są napisane w taki sposób, aby odpowiedzieć na przerwy - co oznacza, sprawdzanie ich przerwany flagę i to inteligentne InterruptedExceptions (nie tylko je jedząc i kontynuując).

Powyższe porady zakładają, że nie chcesz, aby twoje wątki natychmiast porzuciły to, co robią. Jeśli jesteś w porządku z tym, to zrób im demony.

+3

Problem polegający na użyciu bibliotek trzeciej części, które tworzą własne wątki. I z tymi wątkami jest problem. – user710818

+0

@ user710818: tak, to zły problem. Mam nadzieję, że biblioteki dadzą ci jakiś sposób, by powiedzieć im, żeby zrobili zgrabne zamknięcie. –

Powiązane problemy