Wie wird der Tomcat-Start bei einer Ausnahme in ServletContextListener abgebrochen?

8

Ich habe eine Klasse implementiert ServletContextListener , die beim Start einige Ressourcen lädt.

Diese Ressourcen sind so wichtig für die Anwendung, dass ich den gesamten Startvorgang versagen möchte, wenn in meiner Logik ein schlechtes Ereignis eintritt.

Gibt es einen Befehl, den ich innerhalb der Methode ServletContextListener.contextInitialized() ausführen kann, um den gesamten Tomcat-Start zu stoppen und fehlzuschlagen?

    
urir 18.12.2012, 12:13
quelle

2 Antworten

11

Geben Sie Folgendes an:

%Vor%

in Ihren java Laufzeitoptionen unter Angabe der offiziellen Dokumentation :

  

Wenn der Wert true ist, wird der Server beendet, wenn während der Initialisierungsphase des Servers eine Ausnahme auftritt.

     

Wenn nicht angegeben, wird der Standardwert false verwendet.

UPDATE:

Wenn Sie das mit Code machen wollen, funktioniert System.exit() ?

%Vor%

Sie können verwenden, um vorhandene Listener zu umhüllen, ohne sie zu überladen. Nicht sicher, wie Tomcat reagieren wird ...

    
Tomasz Nurkiewicz 18.12.2012 12:18
quelle
0

Wenn Sie Tomcat stoppen möchten, weil Ihre Webanwendung nicht bereitgestellt werden konnte, nehme ich an, dass Sie keine anderen Apps für Tomcat bereitgestellt haben. Warum bauen Sie diese App dann nicht als eigenständige Webanwendung mit integriertem Tomcat / Jetty? Auf diese Weise wird der eingebettete Server auch heruntergefahren, solange Ihre Webanwendung nicht ordnungsgemäß gestartet wird.

Für mich sieht es so aus, als ob Sie sich auf ServletContextListener konzentrieren, um ein Problem anzugehen, für das ServletContextListener nicht gedacht ist.

Verwenden Sie nicht System.exit() , weil dadurch der Server zum Absturz gebracht wird, der möglicherweise andere bereitgestellte Apps ausführt. Wenn es in Ordnung ist, weil Sie wissen, dass es nie andere Apps geben wird (und Sie nicht wollen), dann erstellen Sie eine eigenständige Webanwendung. Diese schlechte Praxis wird in CWE als mögliche Schwäche aufgeführt: CWE-382

Nur ein Hinweis: Spring Boot erleichtert den Aufbau einer eigenständigen Webapp mit integriertem Server. Siehe dieses Handbuch: Ссылка

Guter Artikel, der erklärt, warum Sie wahrscheinlich danach suchen: Ссылка

    
Leo Holanda 11.08.2016 20:50
quelle

Tags und Links