Как я могу установить тайм-аут на весну DriverManagerDataSource - PullRequest
4 голосов
/ 13 сентября 2010

Мы используем DriverManagerDataSource из среды Spring (версия 2.5) для объединения подключений к Oracle.Однако, похоже, что для этих соединений не определен тайм-аут - вчера, после аварийного перезапуска базы данных, у нас был поток, висящий на сокете, прочитанном внутри соединения с базой данных.Как я могу установить тайм-аут, скажем, 10 минут, чтобы он вызывал исключение в следующий раз?

Ответы [ 3 ]

4 голосов
/ 15 сентября 2010

Я закончил тем, что изменил компонент в контексте Spring следующим образом:

<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" autowire="no">
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    <property name="connectionProperties">
        <props>
            <prop key="oracle.net.READ_TIMEOUT">60000</prop>
        </props>
    </property>
</bean>

Я не знаю, работает ли он еще.

1 голос
/ 13 сентября 2010

Oracle имеет встроенный пул соединений: oracle.jdbc.pool.OracleDataSource.Я рекомендую вам использовать это напрямую.Ссылка на Oracle JDBC (10gR2, другие версии будут аналогичными) находится в http://download.oracle.com/docs/cd/B19306_01/java.102/b14355/toc.htm. Достопримечательности:

0 голосов
/ 13 сентября 2010

Если ваша реализация драйвера Oracle поддерживает свойство timeout, вы можете передать его базовой реализации через getConnectionProperties().put(key, timeout)

Полагаю, вы понимаете, что DriverManagerDataSource не пул соединений? Из документов:

ПРИМЕЧАНИЕ. Этот класс не является фактическим пулом соединений; это на самом деле не Соединения с бассейном. Он просто служит простая замена для полноценного пул соединений, реализующий то же самое стандартный интерфейс, но создание нового Соединения на каждый звонок. [..] Если ты нужен "реальный" пул соединений снаружи контейнера J2EE, рассмотрим Apache Jakarta Commons DBCP или C3P0 .

Вас также может заинтересовать Пул соединений OCI ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...