[Seasar-user:6563] Re: [Teeda]Sessionに値を保持する場合のutとctの違い

Kenji Yamaguchi [E-MAIL ADDRESS DELETED]
2007年 3月 8日 (木) 11:01:15 JST


山口です。

> パッケージを変更して,SMART deploy のルートパッケージ
> 以下から外すことです. 
こちらで試した所、意図した動作になりました。
ありがとうございました。

-----Original Message-----
From: [E-MAIL ADDRESS DELETED] [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of Koichi Kobayashi
Sent: Thursday, March 08, 2007 4:00 AM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:6562] Re: [Teeda]Sessionに値を保持する場合のutとctの違い

小林 (koichik) です.

Date:    Wed, 7 Mar 2007 18:32:12 +0900
From:    "Kenji Yamaguchi" <[E-MAIL ADDRESS DELETED]>
To:      <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:6557] [Teeda]Sessionに値を保持する場合のutとctの違い

> TeedaでSessionに情報を保持する方法ですが、
> Stringで保持するやり方だと問題なかったのですが、
> Usersinfo(マスタのEntity)のようなものを保持しようとする
> env.txtが ut だとエラーになってしまいます。
> ct にすると意図した通りに動いてくれます。
> 何が問題なのでしょうか?

おそらく,SMART deploy を使っていて,ut で HOT,
ct で COOL になっていますよね?

> view以下のフォルダ構成
> /login/login.html ← ここで保持
> /other/other.html ← ここで保持した内容を表示

HOT の場合,login.html を表示するときと other.html を
表示するときでは別のクラスローダが使われます.
そして,login.html を表示する際の Userinfo と,
other.html を表示する際の Userinfo が別のクラス
ローダにロードされたものだと,同じ Userinfo であっても
別のクラスとして扱われるため,

> org.seasar.framework.beans.IllegalPropertyRuntimeException: 
> [ESSR0059]クラス(demo.dto.KeepDto)のプロパティ(loginUsersinfo)の設定に失
> 敗しました。理由はjava.lang.IllegalArgumentException: argument type mismatch

ということになってしまいます.

実際には,login.html を表示する際は HOT 用の
クラスローダに,other.html を表示する際は
Web コンテナのクラスローダにロードされていると
思われます.

対応策はいくつかあるのですが,無難なのは Userinfo の
パッケージを変更して,SMART deploy のルートパッケージ
以下から外すことです.
現在はおそらく,Userinfo はルートパッケージ以下に
いますよね? そのため,最初は HOT 用のクラスローダに
ロードされてしまっているのだと思われます.
Userinfo を SMART deploy のルートパッケージから
外せば HOT のクラスローダでロードされることは
なくなり,この問題は発生しなくなります.

もう一つは,Userinfo も session スコープの
コンポーネントして dicon に登録することです.
そうすると,クラスローダが変わっても S2 の方で
適切に対処するようになります.


--
<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 mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user





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