Служба Spring отключается после подключения к БД - PullRequest
0 голосов
/ 09 августа 2011

У меня есть приложение веб-службы Spring CXF, развернутое на сервере JBOSS. Служба работает нормально, и время от времени (в течение 5-6 дней после запуска сервера) я получаю сообщение об ошибке "Не удалось открыть соединение JDBC для транзакции; вложенное исключение - org.apache.commons.dbcp.SQLNestedException: не удается получить соединение, ошибка пула «Тайм-аут ожидания незанятого объекта», и этот конкретный сервис отключается

У меня около 17 служб внутри этого приложения, и только служба, у которой возникла проблема с подключением к БД, перестает работать до перезапуска сервера.

Другие услуги работают.

Ниже приведена конфигурация моего шаблона JDBC.

<bean id="dataSource" destroy-method="close"
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="initialSize" value="10" />
        <property name="maxIdle" value="10" />
        <property name="maxActive" value="100" />
        <property name="maxWait" value="1000" />
        <property name="validationQuery" value="select 1 from sysibm.sysdummy1" />
        <property name="testOnBorrow" value="true" />
        <property name="testWhileIdle" value="true" />
        <property name="timeBetweenEvictionRunsMillis" value="1200000" />
        <property name="minEvictableIdleTimeMillis" value="1800000" />
        <property name="numTestsPerEvictionRun" value="5" />
        <property name="defaultAutoCommit" value="false" />
    </bean>

Ваша помощь очень ценится.

Ответы [ 3 ]

0 голосов
/ 09 августа 2011

Звучит как утечка соединения, или что у вас есть действительно долго работающие процессы, которые удерживают соединение с базой данных в течение длительного времени, в конечном итоге истощая пул соединений.Также возможно, хотя и маловероятно, что у вас очень большая задержка базы данных, что в пуле обнаруживается неработающее соединение и что распознавание неработающего соединения, установление нового и проверка его занимают больше времени, чем указанная вами 1 секунда.бассейн.

0 голосов
/ 10 августа 2011

Вы можете попробовать изменить источник данных на: org.springframework.jdbc.datasource.DriverManagerDataSource

Лучше настроить источник данных с помощью JBoss и выполнить поиск Java EE-jndi.http://techdive.in/spring/spring-jndi-datasource-configuration-jboss

0 голосов
/ 09 августа 2011

Я бы рекомендовал вам переключиться на источник данных JNDI, управляемый JBOSS.

...