2017-01-22 19 views
0

Есть ли способ использовать c3p0 в качестве поставщика подключения к хранилищу Hibernate dropwizard? я добавил свойства C3P0 в конфигурационном файле dropwizard, но я не думаю, что он сделал что-то .. Кроме того, я добавил C3P0 зависимость гибернации в ПОМ файлИнтеграция Dropwizard и c3p0

+0

https://github.com/mtakaki/dropwizard-hikaricp - Пример кода для интеграции HicariCP в качестве пула соединений с базой данных. – zloster

ответ

0

Итак, я вряд ли эксперт здесь, ваш вопрос - это первый раз, когда я столкнулся с dropwizard.

Но быстрый взгляд на его код предполагает, что он полагается на DataSourceFactory, который жестко запрограммирован для использования пула соединений tomcat-jdbc.

Однако, так как looks like настроить спящий режим (и флористику дб-зависимые модули) непосредственно путем построения вашей собственной DataSourceFactory и так, что класс nonfinal, я думаю, вы могли бы просто написать свой собственный подкласс и переопределить его метод сборки для возврата правильно сконфигурированный источник данных c3p0 или (более легко), пусть c3p0 DataSource получает свою конфигурацию из файла c3p0.properties (или любой из нескольких стилей конфигурации c3p0 поддерживает). Тогда унаследованные геттеры и сеттеры будут бессмысленными - эти свойства будут игнорироваться, а попытки настроить DataSource с помощью json или yaml инструментов dropwizard будут игнорироваться. (Вы можете переопределить эти геттеры и сеттеры, чтобы выбросить исключение, чтобы напомнить вам, что они не реализованы, но вам нужно будет убедиться, что они не вызываются, даже если вы явно не настроили их.) Единственная сложная часть было бы сконфигурировать MetricRegistry, я полагаю, что вы должны следить и отслеживать статистику о пуле, который вас интересует. Но это не будет слишком сложно: см. Метод start() для ManagedPooledDataSource для шаблона, и все статистические данные, которые вы можете отслеживать на c3p0 PooledDataSource.

Возможно, вам не нужно расширять DataSourceFactory. Достаточно просто написать отдельный класс, который реализует PooledDataSourceFactory. Кроме того, существует класс под названием DatabaseConfiguration, последним сообщением которого является «Добавить объект для плагинов пользовательских пулов соединений с БД». Но я не могу найти никаких примеров или документации этого класса. Довольно ясно, как можно интегрировать c3p0, просто расширив DataSourceFactory, а другие - suggested that.