[Seasar-user:17424] Re: [S2Container][SAStruts] セッション格納の値について
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2009年 5月 13日 (水) 10:00:56 JST
ひがです。
> お世話になっております。
> 山元と申します。
>
> Cool Deploy時にセッションに登録したDtoにActionで値を設定しても、
> 次のリクエストには値が全て未設定になってしまうのですが、
> 何か考えられることはないか教えていただけないでしょうか。
> (Hot Deploy時は問題がありません)
>
> ログから一度目のリクエストと二度目のインスタンスが異なることが
> 分かっています。
>
> またDtoでは下記の様に
>
> @Component(instance = InstanceType.SESSION)
> public class UserContextDto implements Serializable {
>
> Actionでは親クラスで下記の様にしています。
>
> @Resource
> protected UserContextDto userContextDto;
>
これだけの情報だと良くわからないですね。
なぜなら、再現できないからです。
sa-struts-tutorialで再現できるようにしていただくと
助かります。
> また別件なのですが、ログイン時にセッションを破棄・再作成を行い
> 上記Dtoを設定するようにしたいのですがSAStrutsではどのように行うのが
> 最適な方法か、教えていただけないでしょうか。
>
ログインしたときにはじめてセッションに格納したいということなら、
Seasar2にコンポーネントを管理させるのをやめて、
アクションに
@Resource
protected Map<String, Object> sessionScope;
という、Map経由でセッションにアクセスできるコンポーネントを用意し、
ログインしたタイミングで、
UserContextDto userContextDto = new UserContextDto();
...
sessionScope.put("userContextDto", userContextDto);
のように普通のServletと同じような感覚で、プログラミングすると
良いのではないかと思います。
あるいは、Seasar2にコンポーネント管理をさせて、ログインした
タイミングで、loginFlagをonにする手もあります。
Seasar-user メーリングリストの案内