[Seasar-user:16744] Re: SAStrutsでのSESSION使用方法について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 1月 23日 (金) 15:31:00 JST
小林 (koichik) です.
Date: Fri, 23 Jan 2009 13:31:42 +0900
From: aaa aaa <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:16743] RE: Re: SAStrutsでのSESSION使用方法について
> なぜ、自動登録になっていなかったかといいますと、Service共通で
> Interceptorを設定しているのが問題でした。
>
> そこで、お聞きしたいのですがServiceにInterceptor設定をすると
> 自動登録対象ではなくなるのでしょうか?それともただ設定が違うだけでしょうか?
添付の dicon には AspectAutoRegister しか
ありませんが,おそらく ComponentAutoRegister 等も
使っていますよね?
AutoRegister も一種の自動登録ですが,
SMART deploy とは異なります.
AutoRegister の場合,インスタンス属性を明示的に
指定しなければ,デフォルトでは singleton に
なります.
singleton の場合,コンテナの初期化時に
インスタンスが生成されますが,その時点では
HttpServletRequest も HttpSession も存在しません.
そのため,sessionScope は空の HashMap となって
しまいます.
AutoRegister でインスタンス属性を指定するには
<component class="org.seasar.framework.container.autoregister.ComponentAutoRegister">
<initMethod name="addReferenceClass">
<arg>@[E-MAIL ADDRESS DELETED]</arg>
</initMethod>
<property name="instanceDef">
@[E-MAIL ADDRESS DELETED]
</property>
...
</component>
のようにします.
http://s2container.seasar.org/2.4/ja/DIContainer.html#ComponentAutoRegister
SMART deploy では customizer.dicon で
インターセプタを設定できます.
<component name="serviceCustomizer"
class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addCustomizer">
<arg>
<component name="removeSessionCustomizer" class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">"updateChain"</property>
<initMethod name="addClassPattern">
<arg>"basepkg.service"</arg>
<arg>".*Service"</arg>
</initMethod>
<initMethod name="addIgnoreClassPattern">
<arg>"basepkg.service"</arg>
<arg>"AbstractService"</arg>
</initMethod>
</component>
</arg>
</initMethod>
</component>
この場合は ComponentAutoRegister 等で
Service を登録する必要がありません.
SAStruts を使っているなら,AutoRegister を
使うよりこちらがオススメです.
http://s2container.seasar.org/2.4/ja/DIContainer.html#Customizer
--
<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 メーリングリストの案内