[Seasar-user:8102] Interceptorについて
ぺにー
[E-MAIL ADDRESS DELETED]
2007年 6月 6日 (水) 16:01:10 JST
Exceptionが発生時、
「HandleThrowableInterceptor 」をAOPで実行しログを出力したいのですが、
AOPでHandleThrowableInterceptor#handleThrowable()が実行されません。
※ErrorPage.diconはapp.diocnに設定しています。
※ErrorPage#doAction()に、@Aspect("handleThrowableInterceptor")を
記述すると問題なく動作しています。
根本的な勘違いをしているのかもしれませんが、
ご教授お願いします。
プログラムは下記を参照願います。
【ErrorPage.java】
public class ErrorPage {
public String doAction() {
this.check("foo");
this.check(null);
this.check("hoge");
return null;
}
public void check(String str) {
if (str != null) {
System.out.println("【--- " + str + " ---】");
} else {
throw new NullPointerException("エラーが発生しました★");
}
}
}
【HandleThrowableInterceptor.java】
public class HandleThrowableInterceptor extends ThrowsInterceptor {
private static final long serialVersionUID = 1L;
protected Logger log = Logger.getLogger( this.getClass() );
public void handleThrowable(Throwable t, MethodInvocation invocation)
throws Throwable {
// 例外処理
log.error("Exception class[" +
invocation.getThis().getClass().getName() + "]: method[" +
invocation.getMethod().getName() + "]:" + t);
throw t;
}
}
【ErrorPage.dicon】
<components>
<component name="handleThrowableInterceptor"
class="jp.co.gihyo.javaexpert.teeda.web.error.HandleThrowableInterceptor">
</component>
<component class="jp.co.gihyo.javaexpert.teeda.web.error.ErrorPage">
<aspect>handleThrowableInterceptor</aspect>
</component>
</components>
Seasar-user メーリングリストの案内