[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 メーリングリストの案内