2009-08-26 12 views
5

例外のためにエンタープライズアプリケーションが起動しないようにするためのWebSphere 6.1.0.25の方法はありますか?私はcontextInitialized()中にRuntimeExceptionをスローするようにリグせたServletContextListenerを持っています。これにより、サーバーのログにスタック・トレースが生成されますが、WebSphereコンソールにはアプリケーションが正常に開始されたものとして表示され、WARリソースには引き続きアクセスできます。 WebSphereが、WAR内の成果物によって生成されるアプリケーションの正常な開始を示すフラグを立てないようにするメカニズムはありますか?例外時にWebSphere上でJava EEアプリケーションの起動を防止する

また、起動時にロードするようにサーブレットを設定してみましたが、init()から例外がスローされましたが、これは私が探していた効果をもたらしませんでした。

+0

可能な複製 - http://stackoverflow.com/questions/272194/abort-java-webapp-on-startup –

答えて

4

はい、これを行う方法はありますが、それでもWebSphere固有のものだとは思います。数年前にも同じ問題がありました。大量のエラーが発生した場合でも、多くの設定が必要なアプリケーションは起動したままになります。通知する唯一の方法は、ログファイルを見て、例外が発生していないかどうかを確認することでした(Web UIがうまくいきませんでした)。

ほとんどのコンテナで動作すると思われるライフサイクルを処理する標準的な方法はServletContextListenerですが、起動エラーを処理するための優雅な方法はありません。

WebSphere(いくつかのバージョンではとにかく)には、スタートアップBeanという概念があります。

:むしろ、それはあなたがこのリンクこれは、基本的に次の2つのメソッドを実装するEJB Beanを作成することができます http://publib.boulder.ibm.com/inforcenter...

を見てすることができます数年前、私はこれをしなかったということであったとして詳細にそれを説明しようとするよりも

public boolean start() { 
    return new Delegate().start(); 
} 

public void stop() { 
    new Delegate().stop(); 
} 

startメソッドからtrueを返すと、正常に開始されます。そうでなければfalseが返されると、アプリケーションはコンソールから開始し、アプリケーションは起動に失敗したことを示します。コンテナが起動Beanを実装していない場合は、起動ビーンまたはServletContextListenerのいずれかに接続できるように、代理人を実装しました。

スタートアップBeanの唯一の追加点は、WebSphereではAdministrative ConsoleでStartup Beanサービスを有効にする必要があることです。そうでないと実行されず、アプリケーションは初期化を行わずにあなたはそれを試して始める。上記のページからそれを行う方法に関する情報があります。

IBM Redbookにこれに関する詳細情報がありますが、現時点では見つからないようです。

+0

ありがとうございます。私はこれをプロジェクトの現在の依存関係グラフで動作させることができるのかどうかはわかりませんが、知るべき良い情報です。私はこれに踏み込んでフラグを設定し、内部起動が成功しなかった場合にサーブレットフィルタを500回返すだけですべてを実行する必要があります。 –

関連する問題