を使用してmaven-jetty-plugin
、開発モードで Web アプリケーションを実行しています。また、c3p0 JNDI DataSource を構成しますjetty-env.xml
。
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="wac" class="org.mortbay.jetty.webapp.WebAppContext">
<New id="dataSource" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>
<Ref id="wac" />
</Arg>
<Arg>jdbc/MyVeryOwnDB</Arg>
<Arg>
<New class="com.mchange.v2.c3p0.ComboPooledDataSource">
<Set name="driverClass">oracle.jdbc.driver.OracleDriver</Set>
<Set name="jdbcUrl">jdbc:oracle:thin:@X:Y:Z</Set>
<Set name="user">U</Set>
<Set name="password">P</Set>
</New>
</Arg>
</New>
</Configure>
これは問題なく動作しますが、webapp の再デプロイ時に接続プールがシャットダウンされていないことに気付きました。c3p0 スレッドがまだ生きているため、PermGen と JDBC 接続リークの両方が発生します。
jetty-env.xml で定義されたリソースを破棄することについての言及は見つかりませんでした。また、プロダクションのセットアップが異なるため、開発専用のフックを入れることもためらっています。
開発時にアプリケーションを再デプロイするときに、接続プールが閉じられていないために発生するリークがないことを確認するにはどうすればよいですか?