[Seasar-user:20748] Re: TomcatからのUndeploy時にエラーが発生

Watanabe, Satoshi (SDNA) [E-MAIL ADDRESS DELETED]
2011年 5月 13日 (金) 10:47:06 JST


早速のご回答ありがとうございます。
渡辺です。

> Seasar2 の Jar ファイル (s2-framework-2.4.43.jar) を
> <tomcat>/lib に配置していませんか?

確認してみましたが、s2-frameworkはtomcat/libに配置しておりませんでした。
各アプリケーションのWEB-INF/lib以下に配置しております。

ただ、JDBCドライバ自信(mysql-connectorを利用)は、Tomcat/lib以下に配置
しております。
試しにこのTomcat/lib以下のmysql-connectorをアプリケーションのWEB-INF/lib
に配置した所、JDBCドライバのクラスローダがWebappClassLoaderになった事を
確認しました。
ただ、配置されているアプリケーションによっては、JDBC Realmを利用したい
状況があり、mysql-connectorはTomcat/lib以下に配置せざるを得ない状況です。
この状況ですと、Tomcatがmysql-connectorをロードするタイミングによっては、
Seasar2が抱えるmysql-connectorのクラスローダがStandardClassLoaderになって
しまう可能性が出てくるという認識です。
※試しに実験してみたところ、JDBC Realm認証後Seasar2でJDBC接続を行うと、
 Seasar2が利用しているmysql-connectorのクラスローダはStandardClassLoader
 になってしまうようでした。

また、上記状況の認識が正しいかわからない中ではありますが、上記実験の中で、
複数のSeasar2を利用したアプリケーション(mysql-connectorを各アプリケーションの
WEB-INF/libに移動済でWebappClassLoaderによってロードされている)が乗った
Tomcat上で、任意のSeasar2アプリケーションをアンロードすると、すべてのSeasar2を
利用しているアプリケーションが参照しているmysql-connectorがderegister
されているようでした。
※このとき、StandardClassLoaderがロードしているmysql-connectorはderegister
 されていませんでした
※これについては軽く試しただけなので、確実ではないかもしれません。


上記のような結果及び認識をもっておりますが、いかがでしょうか。

---
Satoshi Watanabe
[E-MAIL ADDRESS DELETED]



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