2015-06-01 1 views
1

Я следую учебнику здесь: http://www.liquid-reality.de/display/liquid/2012/01/13/Apache+Karaf+Tutorial+Part+6+-+Database+Access, в котором объясняется, как настроить источник данных в Karaf, используя apache DBCP, завернутый в Ops4J JDBC.Как вы устанавливаете validationQuery при использовании karaf + Ops4j jdbc + apache DBCP?

Вы можете установить свойства в пуле базового объекта с помощью префикса свойств пула, но я не вижу возможности установить свойство validationQuery, возможно, потому что это не свойство базового пула, но сам BasicDataSource. Мне нужно установить это свойство, потому что я испытываю таймауты соединений на нашем dev-сервере, которые иногда нарушают наши ночные интеграционные тесты.

Можно ли это сделать?

+0

Pax jdbc не использует источник BasicDataSource, поэтому я не уверен, что вы можете установить этот параметр вообще. –

+0

Благодарим вас за ответ. Вы знаете об эквивалентном свойстве или о другом способе решения проблемы? Большинство источников данных, на которые я смотрел (Hikari, BasicDataSource, C3PO), имеют способ указать легкий запрос для периодической проверки базовых подключений, прежде чем передавать их в приложение. –

ответ

2

Я нашел способ установить запрос проверки, независимый от BasicDataSource. Существует org.apache.commons.dbcp2.PoolableConnectionFactory.setValidationQuery.

Мы используем PoolableManagedConnectionFactory внутри pax jdbc. В настоящее время нет способа установить это свойство, но я добавил проблему с jira, чтобы добавить эту опцию: https://ops4j1.jira.com/browse/PAXJDBC-70

+0

Это именно то, что мне нужно. Благодарю. Ждем следующего релиза! –

+0

Я добавил код для этого сейчас и решил проблему выше. Поэтому следующий релиз должен иметь это. Я был бы признателен, если бы вы могли проверить источник pax-jdbc и построить/протестировать его для вашего дела. –

+0

Спасибо, что сделали это так быстро. Я проверил, скомпилировал и протестировал, и исправление, похоже, работает. Я отлаживал karaf, и я вижу, что запрос проверки правилен на фабрике. Не так просто имитировать тайм-ауты простоя, но я уверен, что все работает правильно на вашей стороне. Еще раз спасибо. –