[Seasar-user:7154] Re: [Seasar2] セッションに保存したクラスを取り出すとClassCastException発生
原田
[E-MAIL ADDRESS DELETED]
2007年 4月 10日 (火) 09:19:30 JST
原田です。
おお、どんぴしゃです。
パッケージをルートパッケージ以下以外に変更すると、直りました。
> convention.dicon で設定されたルートパッケージ以下に
> 属するクラスでかつ,本来のクラスローダ (HOT deploy 用
> クラスローダの親) にロードされていないクラスです.
いままでルートパッケージ以下で、決められたパッケージ(Dto,Action、Service,Logic等)のみが
HOT deploy 専用のクラスローダにロードされていると思っていたのですが、
違ったということですね。
> HOT deploy 対象から外した場合でも同じというのが
> ちょっと分かりません.
「HOT deploy 対象から外した」といったのは、上記の決められたパッケージ以外(ルートがaa.bb.ccとするとaa.bb.items)に
移動したということですが、クラスローダー的にはHOT DEPLOYで、機能的にはHOT DEPLOYじゃ無い状態という
ことですか?
> 念のため,保存対象のクラスの FQN (不都合な
> ところは xxx などに置換してください) と,
> convention.dicon の設定 (同上) を教えてください.
NGの場合はaa.bb.cc.dto以下やaa.bb.cc.items以下。
<components>
<component class="org.seasar.framework.convention.impl.NamingConventionImpl">
<initMethod name="addRootPackageName">
<arg>"aa.bb.cc"</arg>
</initMethod>
</component>
</components>
ところでHOT DEPLOY対象のままで、これに対応することってできないのですかね。
取りあえず、ありがとうございます。
Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:
> 小林 (koichik) です.
>
> Date: Mon, 09 Apr 2007 21:26:05 +0900
> From: 原田 <[E-MAIL ADDRESS DELETED]>
> To: seasar-ML <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:7150] [Seasar2] セッションに保存したクラスを取り出すとClassCastException発生
>
> > セッションにデータを保存して(正確にはセッションに保存したクラス内に保存して)、
> > 別のリクエストで取り出して、保存したデータの型にCastすると、ClassCastExceptionが発生します。
> > エラー発生後にtomcatを再起動すれば、なぜか2度と発生しなくなります。
> > tomcatのwork以下を削除してtomcatを再起動すると、再発します。
>
> HOT deploy では,HOT deploy 専用のクラスローダを
> リクエストの度に作成しては破棄しています.
> HOT deploy クラスローダにロードされるクラスは
> convention.dicon で設定されたルートパッケージ以下に
> 属するクラスでかつ,本来のクラスローダ (HOT deploy 用
> クラスローダの親) にロードされていないクラスです.
>
> 今回の現象から想像するに,work 以下を削除して再起動
> した後の最初のリクエストでは,該当のクラスは HOT
> deploy 用のクラスローダにロードされてしまうように
> 見えます.
> それがセッションに格納された後,該当のクラスは
> 本来のクラスローダにロードされるのではないでしょうか.
>
> エラー発生後に再起動すると,セッション情報を
> 復元するために該当のクラスが本来のクラスに
> ロードされるため,最初のアクセスでも HOT deploy 用の
> クラスローダにロードされることはなく,問題が起こらないと
> 思われます.
>
> work を消して再起動すると最初のリクエストの時点では
> 該当のクラスが本来のクラスローダにロードされるきっかけが
> なく,HOT deploy 用のクラスローダにロードされ以下同文.
> と推測されます.
>
> > 保存対象のクラスをHOT DEPLOY対象にしても、HOT DEPLOY非対象にしても同じです。
> > 直接セッションに保存しているクラスはHOT DEPLOY非対象です。
>
> 保存対象のクラスを HOT deploy 対象にした場合は
> 上記の説明のようなことが発生していると思います.
>
> HOT deploy 対象から外した場合でも同じというのが
> ちょっと分かりません.
> 現象からは保存対象のクラスが HOT deploy 対象に
> なってしまってるように見えます.
> 念のため,保存対象のクラスの FQN (不都合な
> ところは xxx などに置換してください) と,
> convention.dicon の設定 (同上) を教えてください.
>
>
> --
> <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 メーリングリストの案内