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