[Seasar-user:7897] Re: [Seasar,Teeda]Session破棄時のセッションDto参照で例外発

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 5月 29日 (火) 17:46:55 JST


小林 様
説明不足ですみません。

やりたいのは、
セッション破棄時に
特定のコンポーネントを呼び出し、
そのコンポーネント内で、
セッションに保持されている情報(TestDto)を
参照したいということです。

そのため、セッションリスナーを使い、
セッション破棄時に
セッションオブジェクトを取得し、
呼び出すコンポーネントにそれらを引数として
渡してやろうと考え、
TestDtoをsetAttributeで取得し、
参照しようとしたところ、
NullPointerとなったのです。

もちろん、このDtoは
S2 コンテナがインスタンスを生成してセッションに
設定したものであり、
セッションが破棄されるまでは、
セッターインジェクションであれ、
getAttributeであれ、
普通に取得できています。

ただ、セッションが破棄時点での
sessionDestroyedメソッドでは、
取得しようとしてもNullになるので、
S2 コンテナがインスタンスを生成してセッションに
設定したものは、
セッション破棄状態では
取得する方法が無いのか、
お伺いしたしだいです。

以上、不明な点がございましたら
ご返信ください。


>小林 (koichik) です.
>
>Date:    Tue, 29 May 2007 15:18:55 +0900
>From:    <[E-MAIL ADDRESS DELETED]>
>To:       <[E-MAIL ADDRESS DELETED]>
>Subject: [Seasar-user:7885] [Seasar,Teeda]Session破棄時のセッションDto参照で例外発生
>
>> sessionDestroyedが実行された際に、
>> session.setAttributeで設定した情報は、
>> 問題なく取得できますが、
>> DI対象のもの
>> (instance=InstanceType.SESSIONとか、
>> diconにinstance=sessionと定義されているもの)は、
>> Nullpointerとなります。
>
>すみません,どういうことをやろうとしているのか
>うまく読み取ることができませんでした.
>
>> 対象のコード
>> TestDto testDto = (TestDto) session.getAttribute("TestDto");
>> String xxx = testDto.getXxx();
>
>ここでセッションから取得している Dto は
>S2 コンテナがインスタンスを生成してセッションに
>設定したものということでしょうか?
>つまり,セッションが作成されてから破棄されるまでの
>どこかの時点で S2 コンテナからこの Dto を
>getComponent() したということでしょうか?
>もしそうなら,Dto がインスタンス化された時点の
>状態のまま取得できるはずです.
>
>セッションが作成されてから破棄されるまでの間に
>getComponent() されたことがないコンポーネントは
>インスタンス化されないので,破棄する時点で
>Session#getAttribute() しても何も取得することは
>できません.
>
>> SessionDestroyed状態なので
>> setterインジェクションは使用できず、
>> session.getAttributeしていますが、
>> これが原因でしょうか?
>
>すみません,ここも意味がよく分かりませんでした.
>やりたいこと,期待している動作と実際の動作の
>違いなど,もう少し具体的に説明していただけると
>助かります.
>
>
>--
><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
>



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