2015-09-29 4 views
0

У меня возникла проблема с настройкой таймаута, который используется при установлении нового соединения с базой данных Oracle при использовании пула соединений.DataSource getConnection() настройка таймаута подключения с помощью jndi

Я использую DBCP в Tomcat и XML для настройки ресурса.

В исходном коде я получаю DataSource и подключение, как это:

DataSource ds = (DataSource) envCtx.lookup("jdbc/anncDB"); 
Connection conn = ds.getConnection(); 

Это прекрасно работает, если IP, указанный в URL доступен. Но если он недоступен, требуется 3 минуты до возврата getConnection(). Мне нужно настроить это на меньшее.

Я пробовал setLoginTimeout(), но это не работает. Выполнение ds.setLoginTimeout() занимает 3 минуты перед сбоем.

Любые идеи?

ответ

0

Вы сказали, что используете XML для объявления ресурса. Так я полагаю, у вас есть что-то вроде этого:

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" 
       maxActive="100" maxIdle="30" maxWait="10000" 
       username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://localhost:3306/javatest"/> 

В этом случае смотрите maxWait атрибут. В documentation указано, что это максимальное время ожидания подключения к базе данных (10 с в примере).

Надежда эта помощь

+0

вот мой XML: <Имя ресурса = "JDBC/anncDB" AUTH = "Контейнер" тип = "javax.sql.DataSource" maxActive = "10" maxIdle = "1" maxWait = "5000" имя пользователя = "хххх" пароль = "хххх" driverClassName = "oracle.jdbc.driver.OracleDriver" URL = "jdbcracle: тонкий: @ 10.0.0.0: 1521: ODS" factory = "org.apache.commons.dbcp.BasicDataSourceFactory" /> –

+0

может быть, вы можете протестировать ds.setMaxWait (aDurationInMilliseconds) – vincent

Смежные вопросы