[Seasar-user:8111] Re: Interceptorについて
ぺにー
[E-MAIL ADDRESS DELETED]
2007年 6月 6日 (水) 18:01:01 JST
まだ私には敷居が高いようです。。。
下記のように変更してみたのですが、まだ上手く動きません。
どこが間違っているがご教授願えませんでしょうか?
変更点
・IError.java のインターフェースを追加
・ErrorPage.java に、IErrorをimplements
・ErrorPage.dicon に、pointcut追加
修正後のプログラムは以下の通りです。
【IError.java】
public interface IError {
public abstract String doAction();
}
【ErrorPage.java】
public class ErrorPage implements IError{
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 pointcut="doAction">handleThrowableInterceptor</aspect>
</component>
</components>
------------------------------------------------------------------------------------
小林 (koichik) です.
Date: Wed, 6 Jun 2007 16:01:10 +0900
From: "ぺにー" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:8102] Interceptorについて
> 【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>
<aspect> 要素で pointcut 属性を指定して
<aspect pointcut="doAction">handleThrowableInterceptor</aspect>
としてください.
デフォルトでは,対象のクラスが実装している
インタフェースに定義されたメソッドのみに
インターセプタが適用されます.
ErrorPage クラスはインタフェースを実装していないので
そのままではインターセプタは適用されません.
http://s2container.seasar.org/ja/aop.html#Warning
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内