[Seasar-user:13075] Re: jarファイル中のクラスでHotDeploy

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 2月 26日 (火) 17:00:51 JST


小林 (koichik) です.

Date:    Tue, 26 Feb 2008 13:45:43 +0900
From:    "Kazuya Sugimoto" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:13071] jarファイル中のクラスでHotDeploy

> 下記issueをみると対応済みのようですが、HotDeployで
> Jarファイル中のクラスをHotDeployしよとするとIORuntimeException
> が発生してしまいます。
> https://www.seasar.org/issues/browse/CONTAINER-9

[CONTAINER-9] は S2RMI で ClassCastException が
発生するというものなので,本件とは無関係です.

> Jarファイルが作られるのに時間がかかり間に合っていないのかなとも思った
> のですが、時間を空けてjarファイルの更新日時を確認してから試しても駄目でした。
> Tomcatを再起動すると例外は発生しなくなります。
(略)
> あと、例外発生後にJarファイルに含まれる対象のクラスをエラー前の元の
> ソースコードに戻して、Jarファイルが更新されたのを確認してから試すと、
> 例外が発生しませんでした。

ここから想像するに,古い Jar ファイルがキャッシュ
されているのかもしれません.
# URLConnection はキャッシュするのがデフォルトらしい.

試しに,簡単な Servlet を作ってその init() の中で

URLUtil.disableURLCaches();

を呼び出してみてください.
# URLUtil は org.seasar.framework.util パッケージ

その Servlet を S2ContainerServlet より先に
初期化されるように web.xml の <load-on-startup> を
調整してください.

これで解決するようなら Jar ファイルのキャッシュが
原因です.


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