[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 メーリングリストの案内