[Seasar-user:5914] Re: [Teeda]ThrowsInterceptorでthrowした例外が初回はcatchできない(hotdeploy)

Asarima [E-MAIL ADDRESS DELETED]
2007年 1月 26日 (金) 13:25:10 JST


Asarimaです。

>小林 (koichik) です.
>プロパティの設定などが不要であれば,ThrowsInterceptor を
>dicon に定義せず,HOT deploy 対象にすることで解決できると
>思います.

 結論から申し上げますと、ThrowsInterceptorをHOTの対象にすることで、
catchに成功しました。どうもありがとうございました。

 どうやったかは以下に説明します。

 まず、ThrowsInterceptorをdiconの定義から除外してみましたが、catchで
きませんでした。

 次に、DaoにASPECTアノテーションを書いてみましたが、やはりcatchできま
せんでした。HotClassLoaderがコンポーネントをロードしたことはログを見て
分かりましたが、何故catchできないかはわかりませんでした。

 そこで念のため、LogicにASPECTアノテーションを書いてみたところ、Page
クラスでcatchできました。

 ということで、catchが必要な場合はLogicを作り、すべてのLogicにASPECT
アノテーションを書けば、Pageクラスではcatchできるという結論です。

 全部のLogicに書くのは面倒ですが、全部のLogicに適用しようと思ったら、
結局customizer.diconに書かないといけないので、仕方がないところです。
 Logicでcatchしたいとなったら困りますが、その時は別のLogicに振ろうと
思います。

 ここまで書いて気が付いたのですが、koichikさんはThrowsInterceptorを
本来のクラスローダーに予めロードするように書かれていたので、私のとっ
た方法はあまりよろしくないのかも知れませんね。もう少し考えます。



Seasar-user メーリングリストの案内