У меня есть минимальное веб-приложение 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). Когда я отключаю веб-приложение, соединения сохраняются (в состоянии ОЖИДАНИЕ). Каждый раз, когда я повторно развертываю свое веб-приложение, появляются 5 новых подключений.
Похоже, что пул все еще висит вокруг, и кнопка «Найти утечки» в приложении менеджера Tomcat сообщает мне, что в приложении происходит утечка памяти.
Как избавиться от пула, если веб-приложение не развернуто?