
お世話になります。
struts.xmlにおいて、下記コードを入れて、
Exceptionが発生した際に、error.jspに飛ばしています。
// ----
<global-results>
<result name="Exception">error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="Exception"/>
</global-exception-mappings>
// ----
しかし、コンソールにエラーのスタックトレースが表示できません。
勿論、コメントにするとスタックトレースが出ます。
下記URLを参考に
http://d.hatena.ne.jp/techmedia-think/20080609/1 …
// ----
<interceptors>
<interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor">
<param name="logEnabled">true</param>
</interceptor>
</interceptors>
// ----
を付け加えましたが、スタックトレースが出ませんでした。
何が原因で、どうすれば解決できるでしょうか。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
名前をdefaultStack以外してみたらどうでしょう?
こちらは2.1.6ですが、以下の内容で確認しました。
<package name="example" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="handleExceptionLog"
class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor">
<param name="logEnabled">true</param>
<param name="logLevel">error</param>
<param name="logCategory">test.Error</param>
</interceptor>
<interceptor-stack name="exampleStack">
<interceptor-ref name="handleExceptionLog" />
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<!-- 中略 -->
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="exampleStack" />
<global-results>
<result name="Exception">error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="Exception"/>
</global-exception-mappings>
</package>
この回答への補足
回答ありがとうございます。
ですが、出来そうで出来ません・・・。
上記ソースで気になるのが、
「<param name="logCategory">test.Error</param>」
というものですが、具体的に何を指定して、どういうコードを記述すればよいでしょうか。
APIを見る限り、必須ではなくデフォルトで、ExceptionMappingInterceptorクラスが
指定されるようですが。
No.3
- 回答日時:
logCategoryは適当につけただけなので、関係ないと思います。
あとは、
http://www.opensymphony.com/xwork/download.action
からxworkのソースを取ってきて、ExceptionMappingInterceptorの
interceptメソッドあたりにブレークポイントを貼って、
ステップ実行してみるくらいしかないかなぁ。
やはり、そうなってしまいますか・・・。
もう少し頑張ってみて、ダメだったら他の案で行こうと思います。
この度は、ありがとうございました。
No.1
- 回答日時:
実は、defaultStackの先頭にExceptionMappingInterceptorが積まれています。
その為、defaultStackから拡張すると、ExceptionMappingInterceptorが2回呼ばれてしまいます。
そして、defaultStackに積まれている方は、logEnabledの値が初期値のfalseです。
interceptorを辿って、Actionにたどり着き、その先でExceptionが発生しても、
自分で定義したExceptionMappingInterceptorより先に、
defaultStackに積まれているExceptionMappingInterceptorがcatchして処理をしてしまいます。
そのため、logEnabledを指定してもログが出力されません。
defaultStackを拡張するのではなく、defaultStackと同じ内容でinterceptor-stackを定義してみてください。
ちなみにdefaultStackの内容は、struts2-core-バージョン番号.jarの中にあるstruts-default.xmlを見ればわかります。
この回答への補足
回答ありがとうございます。
私のやり方か悪いと思うのですが、いまいちうまく行きません。
現状のstruts.xmlのコードは下記の通りです。
// ----
<package name="my-struts-default" abstract="true">
<!-- 略 -->
<interceptors>
<!-- 略 -->
<interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor">
<param name="logEnabled">true</param>
</interceptor>
<!-- 略 -->
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception">
<param name="logEnabled">true</param>
</interceptor-ref>
<!-- 略 -->
</interceptor-stack>
<!-- 略 -->
</interceptors>
<default-interceptor-ref name="defaultStack"/>
</package>
<package name="main" extends="my-struts-default" >
<!-- 質問内容のコード同じ -->
</package>
// ----
文字数制限で大幅略しているので、わかりづらいですが、
略してある部分は、struts-default.xmlと同じです。
やはり、interceptorが悪さしてますね。
struts初心者には、迷惑な機能です(^^;)
あと、書き忘れましたが、strutsのバージョンは2.0.14です。
お手数おかけします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
StrutsでJSPからListを受け取り...
-
PropertyNotFoundException解決...
-
JSPからServletに、テーブルに...
-
【Struts】bean:writeタグのpro...
-
strutsでlist型の入力を行うには
-
requestの値が削除されません…
-
JSP DB 表示
-
オブジェクトの中のプロパティ...
-
1ページに10件ずつ表示したい
-
全取得したデータをjspで順番に...
-
iterateで受け取った値を処理に...
-
hibernate.cfg.xmlの設定
-
C言語のポインターに関する警告
-
式の型は配列型で int に解決済...
-
ループ処理の際、最後だけ","を...
-
IF関数でEmpty値を設定する方法。
-
メインが含まれていません
-
変数を動的に利用するには?
-
誰か~誰か~誰か~一生のお願...
-
テキストボックスに入力された...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オブジェクトの中のプロパティ...
-
JSPでImportエラーになります
-
JSPでDBからデータ読み込みブラ...
-
StrutsでJSPからListを受け取り...
-
hiddenの値が期待した値で取得...
-
requestの値が削除されません…
-
JSPからServletに、テーブルに...
-
Java Struts ~に対するゲッタ...
-
全取得したデータをjspで順番に...
-
JSPにて、変数を利用してフォン...
-
<s:iterator>の値をリストで取...
-
PropertyNotFoundException解決...
-
1ページに10件ずつ表示したい
-
NULLが返ってこない…。
-
WebWork(struts2)でのパラメー...
-
【Struts】bean:writeタグのpro...
-
入力チェックとエラーメッセー...
-
HTTPリクエスト
-
データベースに変数の値を挿入
-
strutsでlist型の入力を行うには
おすすめ情報