[Seasar-user:20747] Re: TomcatからのUndeploy時にエラーが発生
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2011年 5月 13日 (金) 03:15:15 JST
小林 (koichik) です.
Date: Thu, 12 May 2011 21:57:42 +0900
From: "Watanabe, Satoshi (SDNA)" <[E-MAIL ADDRESS DELETED]>
To: "[E-MAIL ADDRESS DELETED]" <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:20746] TomcatからのUndeploy時にエラーが発生
> 原因としてはs2container終了時に呼ばれるDisposableUtil内で行っている
> deregisterAllDriversでTomcat(org.apache.catalina.loader.StandardClassLoader)
> が保持しているすべてのDriverをderegisterしているからではないかと思っている
> のですが、上記現象を回避する手段をご存知の場合ご教授頂ければ幸いです。
Seasar2 の Jar ファイル (s2-framework-2.4.43.jar) を
<tomcat>/lib に配置していませんか?
deregisterAllDrivers は,Seasar2 をロードしたクラスローダに
ロードされている JDBC ドライバを登録解除します.
通常,Seasar2 は Web アプリの WEB-INF/lib に配置されるため,
そのクラスローダは Web アプリの WebappClassLoader です.
よって,他の Web アプリが登録した JDBC ドライバや,Tomcat が
登録した JDBC ドライバが解除されることはありません.
deregisterAllDrivers() が StandardClassLoader にロードされている
JDBC ドライバを登録解除しているなら,それは Seasar2 のクラスも
StandardClassLoader にロードされているということになります.
<tomcat>/lib に配置すると,SingletonS2ContainerFactory が
Web アプリ固有にならないなどの問題が発生するので,必ず Web アプリの
WEB-INF/lib に配置してください.
--
{
name: "Koichi Kobayashi",
mail: "[E-MAIL ADDRESS DELETED]",
blog: "http://d.hatena.ne.jp/koichik/",
twitter: "@koichik"
}
Seasar-user メーリングリストの案内