2009-08-12 7 views
5

最初に、すべての回復不可能な例外に対して実行時例外を投げています。これにより、これらの例外が現在、エラーページ(web.xmlで定義)を使用しているコンテナまで移動します。このエラーページには、ロガーを起動するスクリプトレットがあります。Java EE Webアプリケーションですべての例外をキャッチ

私がこれを抱えている問題は、この呼び出し時にスタック上に例外が存在しなくなることです。リクエストスコープ変数( "javax.servlet.error.message")からアクセスできます。この文字列はスタックトレースです。私は、明らかにログを記録するために、このスタックトレースを必要とすると、さまざまなアプリケーションサーバー "javax.error_message"は、セキュリティ上の理由からオフにすることができます.......

私の質問は、

try {} catch (Exception e) {logger.log(...)} 

:この中にすべてのものをラップなしでのJava EEアプリケーション内の?

コンテナが例外をキャッチする前に、おそらく...コンテナからロガーを呼び出す方法が必要です。

+0

あなたはどのフレームワークを使用していますか?ストラット?春? –

+0

これはフレームワークに依存しないものになります。特にアプリケーションサーバーやフレームワークには結びつけたくありません。私たちは実際に3つのフレームワークをサポートしています。これらは単純なj2ee/struts/JSFです(特に、OracleのJSFの採用:ADF Faces)。バックエンドの場合、PL/SQLストアド・プロシージャまたはSQL/jdbc ... ADF Facesの場合と同様に、ADF Businessコンポーネントを使用します。これはToplinkと似ています。 – Zombies

答えて

3

を見てみましょう。応答フィルタを追加し、そのようchain.doFilter(REQ、RESP)をラップすることにより:

try { 
    chain.doFilter(req,resp); 
} catch (Exception e) { 
    logger.error("", e); 
    throw new RuntimeException(e); 
} 

これは、これまで正常に動作し、特定のフレームワークやアプリケーションサーバーに依存していません。

1

これを達成するために私がServlet APIで知っていることは何もありません。

ただし、これはインスタンスリスナーを使用してTomcatで行うことができます。あなたは

<InstanceListener>myapp.MyListener</InstanceListener> 

、このようのcontext.xmlでリスナーをインストールすることができますTomcatは、それが再び例外をスローする前にコンテナが例外をキャッチし、右後InstanceEvent.AFTER_SERVICE_EVENTイベントを発生させます。あなたはすぐそこにロガーを呼び出すことができます。

+0

これがOracle WeblogicまたはOracle Application Serverで実行できるかどうか知っていますか? – Zombies

+0

他の容器に関する経験はありません。それは、コンテナが独自のライフサイクル管理のためのフックを必要とするので、彼らはすべて類似している(おそらく文書化されていない)可能性が非常に高いです。 –

+0

これは、OracleがJSFを使用しているようですが、これはADF Faces(OracleのJSF実装)で行います。http://database.in2p3.fr/doc/oracle/Oracle_Application_Server_10_Release_3/web.1013 /b28967/web_val008.htm – Zombies

0

私が間違っている場合は私を修正しますが、 '例外'オブジェクトは変数として存在します。あなたの 'エラー' jspに '例外'と呼ばれます。このオブジェクトを使用して、例外情報を取得し、エラーJSPにログインすることができます。

0

AOP (Aspect Oriented Programming)が私の最初の選択です。

あなたが定義:

  • がポイントに参加(実行時例外がスローされます)。
  • アドバイス(例外を記録するコード)。
  • ポイントカット(アプリケーションのどの部分がこの部分を「聞いている」)。

私は解決策を見つけたhttp://www.aspectj.org/

関連する問題