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

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


小林さん、ひがさん
渡辺です。
いろいろとご教授頂きまして誠にありがとうございます。

結論から申し上げますと、WEB-INF/libにもmysql-connecterを含めることで
問題が解決致しました。

Sa-struts-tutorialをベースに新規にアプリケーションを作成し、状況を確認して
みたとろこ、小林さんのおっしゃる状況の通り(Webアプリケーションのローダが
WebappClassLoader、ドライバのローダもWebappClassLoader)で、問題の現象が発生
しないことを確認しました。
ただし、問題が発生するアプリケーションでも、Webアプリケーション自信の
クラスローダはWebappClassLoaderとなっておりました。

新規に作成したアプリケーションは問題なかったので、問題は既存のアプリケーション
の設定の問題であろうということで、ひがさんの、
> mysql-connectorはTomcat/libだけでなくWEB-INF/libにもおいて試してもら
> えますか?
に基づき、アプリケーションにmysql-connecterを含めて試したところ問題が解決
致しました。

下記に問題が発生していた際と問題が発生しなくなった際のアプリケーションが
読み込んでいるDriver情報とWebアプリケーションのクラスローダの情報を記載
しておきます。

☆ 問題が発生していた時
■ アプリケーションがロードしているDriver
class com.mysql.jdbc.Driver
 org.apache.catalina.loader.StandardClassLoader
class com.mysql.jdbc.Driver
 org.apache.catalina.loader.StandardClassLoader
class com.mysql.jdbc.Driver
 org.apache.catalina.loader.StandardClassLoader
class com.mysql.jdbc.NonRegisteringReplicationDriver
 org.apache.catalina.loader.StandardClassLoader
■Webアプリケーション自信のクラスローダ
WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: [E-MAIL ADDRESS DELETED]

☆ 問題が発生しなくなった時
■ アプリケーションがロードしているDriver
class com.mysql.jdbc.Driver
 WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: [E-MAIL ADDRESS DELETED]
class com.mysql.jdbc.Driver
 WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: [E-MAIL ADDRESS DELETED]
class com.mysql.jdbc.Driver
 WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: [E-MAIL ADDRESS DELETED]
class com.mysql.jdbc.NonRegisteringReplicationDriver
 WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: [E-MAIL ADDRESS DELETED]
■ Webアプリケーション自信のクラスローダ
WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: [E-MAIL ADDRESS DELETED]


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

また、先ほど私が書いた上記状況ですが、不正な状況が起きなくなってからは上記状況
が確認できておりません。試験中の状態だったので、何か勘違いをしていたのかもしれません。
心配していたRealm認証を使用しているアプリケーションについても、Realm認証後に
Seasar2でJDBC接続しても上記問題が発生しなくなった状況の通りとなり、こちらも
確認中に起きていたような状況にはなっていません。
※色々確認している中だったせいもあり、あまり整理して状況を確認していなかったのが
 よくありませんでした(--;

私の勘違い等々あり、混乱させてしまい申し訳ございませんでした。
また何かありましたら、MLにPostさせていただくかも知れませんがその際は
どうぞよろしくお願いします。
※もう少し状況を整理してPostするように致しますm(__)m

どうもありがとうございました。今後ともどうぞよろしくお願いします。

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




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