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