У меня есть минимальное веб-приложение Spring, развернутое на Tomcat 7.0.22 - оно состоит из пары страниц, контроллера, службы и DAO, у которого есть один метод, выполняющий запрос SELECT.
Веб-приложение настроено на использование нового пула соединений Tomcat JDBC - здесь приведена конфигурация ресурса в context.xml веб-приложения:
<Resource name="jdbc/myDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@blah blah"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
maxActive="15"
initialSize="5"
maxWait="40000"
validationQuery="select 1 from dual"
removeAbandoned="true"
removeAbandonedTimeout="300"
logAbandoned="false"
username="user"
password="pass"
testOnBorrow="true"
validationInterval="30000"
timeBetweenEvictionRunsMillis="60000"
minEvictableIdleTimeMillis="60000" />
При развертывании веб-приложения появляется 5 подключений (запрос v $ session из SQL Developer). Когда я удаляю веб-приложение, соединения сохраняются (в состоянии WAITING). Каждый раз, когда я повторно внедряю свое веб-приложение, появляются 5 новых подключений.
Похоже, что пул все еще находится вокруг, а кнопка "Найти утечки" в приложении-диспетчере Tomcat сообщает мне, что в приложении происходит утечка памяти.
Как избавиться от пула, когда веб-приложение не развернуто?