jp.terasoluna.fw.web.struts.action
クラス SystemExceptionHandler

java.lang.Object
  上位を拡張 org.apache.struts.action.ExceptionHandler
      上位を拡張 jp.terasoluna.fw.web.struts.action.DefaultExceptionHandler
          上位を拡張 jp.terasoluna.fw.web.struts.action.SystemExceptionHandler

public class SystemExceptionHandler
extends DefaultExceptionHandler

SystemException専用の例外処理ハンドラ。

システム例外発生時のログ出力とエラー画面への遷移を行う。
アクション実行中にシステム例外が発生したときは、 エラー情報をログ出力した上で、当該アクションマッピングに定義されている システムエラー画面に遷移する。
本機能を利用するためには、Struts設定ファイル(struts-config.xml)に グローバル例外、またはアクションレベル例外ハンドラクラスとして指定する。
グローバル例外と、アクションレベル例外が衝突している場合、 Strutsの仕様によりアクションレベル例外が優先される。
置換文字列がSystemExceptionに指定されていた場合は、エラーメッセージへの埋め込みを行う。

ログレベルの指定 プロパティlogLevelに下記の6種類のログレベルを 指定することが可能。

  1. trace
  2. debug
  3. info
  4. warn
  5. error
  6. fatal

※指定しない場合は、デフォルトのerrorとなる。
※logLevelを指定する場合は、<exception>タグのclassName属性に ExceptionConfigExを指定すること。

グローバル例外ハンドリング設定例 Struts設定ファイル(struts-config.xml)に以下のように記述する。

 <struts-config>
   …
   <global-exceptions>
     <exception key="some.key"
                path="/system-error"
                type="jp.terasoluna.fw.exception.SystemException"
                className="jp.terasoluna.fw.web.struts.action.ExceptionConfigEx"
                handler="jp.terasoluna.fw.web.struts.action.SystemExceptionHandler">
       <set-property property="module" value="/exp"/>
       <set-property property="logLevel" value="fatal"/>
     </exception>
   </global-exceptions>
   …
 <struts-config>
 

アクションレベル例外ハンドリング設定例 Struts設定ファイル(struts-config.xml)に以下のように記述する。

 <struts-config>
   …
   <action path="/start"
           type="jp.terasoluna.sample.xxx.SampleAction"
           name="_sampleForm"
           scope="session">
     <exception key="some.key"
                type="jp.terasoluna.fw.exception.SystemException"
                className="jp.terasoluna.fw.web.struts.action.ExceptionConfigEx"
                handler="jp.terasoluna.fw.web.struts.action.SystemExceptionHandler"
                path="/sub-forward.do">
       <set-property property="module" value="/sub"/>
     </exception>
     <forward name="success" path="/system-error"/>
   </action>
   …
 <struts-config>
 

なお、<exception>要素のpath属性で遷移先パスが指定 されていない場合は、アクションマッピングのinput属性を 転送先リソースとする。

発生した例外インスタンスは、reuqestにPageContext.EXCEPTIONのキーで格納される。 これにより遷移先のJSPにて、暗黙オブジェクトの exception として取得できる。

関連項目:
SystemException, ExceptionConfigEx, DefaultExceptionHandler, PageContext

フィールドの概要
private static org.apache.commons.logging.Log log
          ログクラス。
 
クラス jp.terasoluna.fw.web.struts.action.DefaultExceptionHandler から継承されたフィールド
LOG_LEVEL_DEBUG, LOG_LEVEL_ERROR, LOG_LEVEL_FATAL, LOG_LEVEL_INFO, LOG_LEVEL_TRACE, LOG_LEVEL_WARN
 
コンストラクタの概要
SystemExceptionHandler()
           
 
メソッドの概要
 org.apache.struts.action.ActionForward execute(java.lang.Exception ex, org.apache.struts.config.ExceptionConfig eConfig, org.apache.struts.action.ActionMapping mapping, org.apache.struts.action.ActionForm formInstance, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          SystemException例外ハンドラのエントリポイント。
private  java.lang.String getErrorMessage(javax.servlet.http.HttpServletRequest req, SystemException se, org.apache.struts.util.MessageResources resources)
          メッセージリソースに対してメッセージキーを指定することで エラーメッセージを取得する。
protected  org.apache.commons.logging.Log getLogger()
          ハンドラのロガーを取得する。
 
クラス jp.terasoluna.fw.web.struts.action.DefaultExceptionHandler から継承されたメソッド
logException, logException, logException, logException
 
クラス org.apache.struts.action.ExceptionHandler から継承されたメソッド
storeException, storeException
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

log

private static org.apache.commons.logging.Log log
ログクラス。

コンストラクタの詳細

SystemExceptionHandler

public SystemExceptionHandler()
メソッドの詳細

execute

public org.apache.struts.action.ActionForward execute(java.lang.Exception ex,
                                                      org.apache.struts.config.ExceptionConfig eConfig,
                                                      org.apache.struts.action.ActionMapping mapping,
                                                      org.apache.struts.action.ActionForm formInstance,
                                                      javax.servlet.http.HttpServletRequest request,
                                                      javax.servlet.http.HttpServletResponse response)
                                               throws javax.servlet.ServletException
SystemException例外ハンドラのエントリポイント。

オーバーライド:
クラス DefaultExceptionHandler 内の execute
パラメータ:
ex - 例外
eConfig - 例外コンフィグ
mapping - アクションマッピング
formInstance - アクションフォーム
request - HTTPリクエスト
response - HTTPレスポンス
戻り値:
遷移情報
例外:
javax.servlet.ServletException - サーブレット例外
関連項目:
DefaultExceptionHandler.execute( java.lang.Exception, org.apache.struts.config.ExceptionConfig, org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse )

getErrorMessage

private java.lang.String getErrorMessage(javax.servlet.http.HttpServletRequest req,
                                         SystemException se,
                                         org.apache.struts.util.MessageResources resources)
メッセージリソースに対してメッセージキーを指定することで エラーメッセージを取得する。

パラメータ:
req - HTTPリクエスト
se - SystemException
resources - メッセージリソース
戻り値:
エラーメッセージ

getLogger

protected org.apache.commons.logging.Log getLogger()
ハンドラのロガーを取得する。

オーバーライド:
クラス DefaultExceptionHandler 内の getLogger
戻り値:
ロガー