[Seasar-user:5930] Re: [S2Container]S2FrameworkTestCase/UnitClassLoaderの実装について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 1月 28日 (日) 00:30:23 JST
小林 (koichik) です.
Date: Sat, 27 Jan 2007 21:12:11 +0900
From: kubo <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:5928] Re: [S2Container]S2FrameworkTestCase/UnitClassLoaderの実装について
> <結論>
> 結論から言いますと、
>
> A where MySQLに対してJDBC(MySQL-Connector-3.1.x or 5.0.x)でAccess
> B and Interceptor内で物理的なConnectionの生成を行う(ConnectionPoolへのAccess一回目)
> C and Interceptor内でそのConnectionのclose()を呼び出す(ConnectionPoolへ返却)
なにか,いろいろな要因が絡んでそうですね...
B から考えられるのは,MySQL の JDBC ドライバが
UnitClassLoader への参照または,UnitClassLoader から
ロードされたクラスあるいはそのインスタンスへの参照を
持ってしまう可能性です.
もしその影響であれば,DisposableUtil#deregisterAllDrivers() を
呼び出すことで回避できるかもしれません.
現状,このメソッドは S2 内からは呼び出しを行っていません.
# Dolteng だったか,Eclipse プラグインの中で使ってるはず
お手数ですが,
org.seasar.framework.util.DisposableUtil#dispose() の
最後に deregisterAllDrivers() の呼び出しを追加すると
どうなるか試していただけないでしょうか?
> 「C」をしなければ発生しません。
> →ConnectionPoolのDestroy時はactivePoolに入った状態で破棄される。
こちらはもしかすると,JIRA に登録されている CONTAINER-28 と
関係があるかもしれません.
https://www.seasar.org/issues/browse/CONTAINER-28
この対応は SVN にコミット済みなので,お手数ですが
SVN の最新版でどうなるか試していただけないでしょうか.
> そして、上記の条件は、MySQL+S2Daoで簡単に発生します。
申し訳ありませんが,MySQL の環境を持っていないもので...
# 作れよと言われればそれまでなんですが.(^^;
--
<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 メーリングリストの案内