Ich habe einen ServletContextListener, der beim Starten meiner Java EE-Anwendung einige Datenbankverwaltungsfunktionen ausführt. Dieser läuft in meiner Anwendung, bevor JPA und andere Teile der Anwendung gestartet/geladen werden. Wenn die Datenbankwartung fehlschlägt, protokolliere ich die Fehler. Wenn die Datenbankwartung fehlschlägt, funktioniert die Anwendung nicht richtig und ich möchte die Anwendung anhalten.
Wie kann ich anmutig und korrekt beenden die Anwendung von ServletContextListener.contextInitialized?
Die von Viven unten angegebene Lösung ist nahe dran, aber nicht ganz. Wenn ich eine RuntimeException auslöse, wird Glassfish in einem inkonsistenten Zustand belassen, in dem die Verwaltungskonsole nicht zugänglich ist, aber irgendein Prozess noch läuft und Port 3700 (IIOP?) offen hält, was dann einen Neustart verhindert.