Я использую maven-jetty-plugin
для запуска веб-приложения в режиме разработки.Кроме того, я настраиваю источник данных JNDI c3p0 в 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, и я также стесняюсь добавлять хуки только для разработки, так какпроизводственная настройка отличается.
Как я могу убедиться, что при повторном развертывании приложения во время разработки нет утечки, вызванной тем, что пул соединений не был закрыт?