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