Jeśli chcesz zatrzymać Tomcat, ponieważ nie udało się wdrożyć aplikacji, zakładam, że nie masz zainstalowanych innych aplikacji do tomcat. W takim razie dlaczego nie stworzysz tej aplikacji jako samodzielnej aplikacji internetowej z wbudowanym Tomcat/Jetty? W ten sposób, dopóki twoja aplikacja nie uruchomi się poprawnie, serwer wbudowany również się wyłączy.
Dla mnie wygląda na to, że koncentrujesz się na ServletContextListener
, aby rozwiązać problem, który nie jest przeznaczony dla ServletContextListener
.
Nie używaj System.exit()
, ponieważ zabije serwer, na którym mogą być uruchamiane inne wdrożone aplikacje. Jeśli wszystko jest w porządku, ponieważ wiesz, że nigdy nie będziesz mieć innych aplikacji (i nie chcesz), a następnie stwórz samodzielną aplikację internetową. Ta zła praktyka jest wymieniona w CWE jako potencjalna słabość: CWE-382
Tylko podpowiedź: wiosenny rozruch ułatwia budowanie samodzielnej aplikacji webowej z wbudowanym serwerem. Zobacz ten przewodnik: https://spring.io/guides/gs/spring-boot/
dobry artykuł wyjaśniający, dlaczego to jest chyba to, czego szukasz: http://www.beyondjava.net/blog/application-servers-sort-of-dead/
Czy ktoś znaleźć sposób inny niż System.exit (1)? – Bastien
@Bastien, użyj SpringBoot –
@Leo Irrelevant. Poprawną odpowiedzią na to pytanie będzie wyjaśnienie, w jaki sposób SpringBoot zarządza tym problemem. – Bastien