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