Frage

Meine Webapp ist Teil eines größeren EAR die in einen Websphere-Server bereitgestellt wird. Der Server verwaltet Anzahl von anderen Anwendungen auf demselben virtuellen Server. Meine Webapp hat einige Initialisierung / Gesundheitskontrollen in einer servletContextListener-> contextInitialized Methode. Ich mag die Webapp nicht verfügbar machen, wenn die Initialisierung / Gesundheitskontrollen versagen. Was ist eine realiable Art und Weise, dies zu tun? Wird das Werfen einer Runtime aus contextInitialized ausreiche? Ist der Rest der EAR noch verfügbar zu erwarten? Danke.

War es hilfreich?

Lösung

Ich würde empfehlen, eine RuntimeException von ServletContextListener.contextInitialized werfen.

Servlet 2.3 war nicht ganz klar zu diesem Thema, aber Servlet 2.4 hinzugefügt, um das folgende Detail:

  

Einige Ausnahmen treten nicht unter dem   Aufrufliste einer anderen Komponente in der   Anwendung. Ein Beispiel hierfür ist ein   ... ServletContextListener dass   wirft eine nicht behandelte Ausnahme während eines   Anmeldung Servletkontext   Initialisierung…. In diesem Fall,   Der Entwickler hat keine Möglichkeit,   behandelt die Ausnahme. Der Kontainer    können für alle nachfolgenden Anfragen antworten   auf die Web-Anwendung mit einem HTTP   Statuscode 500, um anzuzeigen, ein   Anwendungsfehler.

Da heißt es, dass die Servlet-Engine „kann“ Zugriff auf die Anwendung deaktivieren, können Sie einen Server finden, die etwas anderes tut. Allerdings Tomcat und WebLogic deaktivieren sowohl die Anwendung und die einzige andere vernünftige Sache, die ich denken kann, wäre die Ausnahme zu ignorieren. Ich kann nicht einen Behälter sehen, dass das sehr zu sein tat populär so würden Sie besser testen Sie es in WebSphere selbst.

Andere Tipps

eine Runtime Werfen wird wahrscheinlich nur das Servlet nicht verfügbar machen. Ein sicherer Weg könnte sein, so etwas wie ein Frühling Abfangjäger zu implementieren, die auf eine Fehlerseite oder etwas weiterzuleiten, wenn die Kontrollen nicht geklappt haben schwenken. Auf diese Weise brauchen Sie nicht die App von Laden zu verhindern, aber es kann mehr anmutig zur Laufzeit behandeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top