[Seasar-user:12216] Re: [Teeda] セッションタイムアウト時にActionクラスのdoメソッドにAOPがかからない

松崎 学 [E-MAIL ADDRESS DELETED]
2007年 12月 19日 (水) 20:41:25 JST


小林さん

松崎です。いつもお世話になっております。

教えていただいた方法で解決できました。
クラスローダの件、勉強になりました。
ありがとうございました。

On Wed, 19 Dec 2007 17:00:35 +0900
Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:

> 小林 (koichik) です.
> 
> Date:    Wed, 19 Dec 2007 15:57:44 +0900
> From:    松崎 学 <[E-MAIL ADDRESS DELETED]>
> To:       [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:12200] Re: [Teeda] セッションタイムアウト時にActionクラスのdoメソッドにAOPがかからない
> 
> > Filterでチェックするようにしてみたのですが、
> > Hot Deployで動かすとLinkageErrorが出てしまいます。Coolの時はOKでした。
> > 作成したFilterはweb.xmlの定義でfilterの最後に追加してます。
> > また、現在はdbsessionも使用しています。
> > 
> > クラスローダ関連だと思うのですが、クラスローダについて詳しくないので、
> > LinkageErrorが発生する理由と対応方法をお教えいただけると助かります。。。
> 
> Tomcat の提供する ClassLoader と,HotdeployClassLoader が
> 同じクラスをロードしてしまった場合によく発生します.
> Filter は HOT deploy 非対象なので,そこで
> いろいろなクラスを参照すると問題が起こりやすく
> なります.
> 
> Filter では極力処理を行わず,コンテナから
> Service なり Helper なりを取得して処理を任せるのが
> 無難だと思います.
> その Service なり Helper なりのインタフェースは
> Callable など汎用的なインタフェースにすると
> 安全です.
> 
> SessionCheckService service = 
>   SingletonS2Container.getComponent(SessionCheckService.class);
> 
> のようにすると,SessionCheckService が Tomcat の
> ClassLoader にロードされてまた微妙な問題に
> つながるかもしれないので,
> 
> Callable<Boolean> service = 
>   (Callable<Boolean>) SingletonS2Container.getComponent("sessionCheckService");
> 
> のようにするとおそらく問題ないと思います.
> 
> Callble がイマイチの場合は独自の interface を
> 用意してもいいのですが,それは HOT deploy
> 非対象となるように,ルートパッケージから
> 外してください.
> 実装クラスはルートパッケージ以下に置いて,
> そのクラス名から求められるコンポーネント名で
> コンテナから取得してください.
> ルートパッケージが foo だとすると,
> 
> package bar;
> public interface SessionChecker {
>   ...
> }
> 
> package foo;
> public class SessionCheckService implements SessionChecker {
>   ...
> }
> 
> SessionChecker service = 
>   (SessionChecker) SingletonS2Container.getComponent("sessionCheckService");
> 
> という感じ.
> 
> 
> --
> <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

--
松崎 学 <[E-MAIL ADDRESS DELETED]>



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