[Seasar-user:12880] Re: Web以外でのComponentのScope指定
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 2月 14日 (木) 22:00:35 JST
小林 (koichik) です.
Date: Thu, 14 Feb 2008 20:45:17 +0900
From: "TAKEUCHI Shinichi / 竹内 伸一" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:12874] Re: Web以外でのComponentのScope指定
> S2RMIで使用しているのは、GenericExternalContextだと思う
> のですが、これにはSessionスコープを扱う機能がないようです。
セッションはリクエスト (スレッド) ほど
一般化できないので用意していません.
> そこで、Sessionスコープを保持する機能を持たせたカスタムの
> ExternalContextを作成してS2に登録したいのですが、その方法
> が分かりません。
> もしかすると、他のS2の既存コンポーネントの置換え登録方式
> と同じでapp.diconの初めの方で、カスタムExternalContextを
> 登録するだけでいいような気もするのですが、、、
いいえ.
org.seasar.framework.container.external.GenericS2ContainerInitializer
という初期化クラスが GenericExternalContext を
使うようハードコードしています.
この処理は S2Container のインスタンスを作成する
前に行われるので,dicon に記述するわけにはいきません.
# ExternalContext は S2Container 自身が
# 使用することに注意.
GenericExternalContext を使わない場合は独自の
初期化処理を行うクラスが必要です.
例えば Servlet 環境では
org.seasar.framework.container.servlet.SingletonS2ContainerInitializer
というクラスがほとんど同じようなことを
やっています.
ここでは HttpServletExternalContext という
ExternalContext の実装を設定しています.
これらと同じように独自の ExternalContext を
設定する独自の初期化クラスを用意すればいいと
思います.
# その場合,S2RMI-Server は使えなくなります.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内