4

load-on-startupでマークされ、実装されている Java サーブレットがありますinit()init()ロジックの一部として、validate()物事が有効かどうかを判断する呼び出しがあります。

私の問題は、問題がないとvalidate()判断された場合、何かを修正する必要があるというアラートとしてアプリが起動しないようにしたいということです。を投げてみましたがServletException、その情報がコンソールにパイプされている間、アプリでトラフィックを送信でき、応答しました.

最後に、私の手はタイミングでやや縛られています。私のサーブレットは、検証しようとしているコンテンツをセットアップする基本クラスを拡張します。

解決策があれば、Tomcat と WebLogic で実行する必要があります。

4

1 に答える 1

3

上で Luiggi Mendoza が指摘したように、Web アプリケーション全体の初期化の適切な場所は、個々のサーブレットの init メソッドに依存するのではなく、ServletContextListener にあります。

例外 (実行時例外) がリスナーの contextInitialized メソッドからスローされると、Web アプリケーション コンテキストは (少なくとも Tomcat 6 では) 破棄されます。

最良の方法は、初期化ロジックを ServletContextListener に移動することです (Web アプリケーションごとに複数のリスナーを定義でき、それらは web.xml に登録されている順序で実行されます)。そして、リクエスト処理ロジックのみをサーブレットに保持します。

于 2013-09-17T14:48:06.647 に答える