有没有办法使用c3p0作为dropwizard Hibernate存储库的连接提供者?我将c3p0的属性添加到dropwizard配置文件中,但我不认为它做了什么。此外,我还向pom文件添加了Hibernate c3p0依赖项。
发布于 2017-01-23 15:01:12
所以,我在这里几乎不是专家,你的问题是我第一次遇到dropwizard。
但是快速浏览一下它的代码就会发现,它依赖于一个硬编码的DataSourceFactory来使用tomcat-jdbc连接池。
然而,由于它是通过构造您自己的DataSourceFactory直接配置hibernate (以及其他依赖于数据库的模块)的,并且由于该类是非最终的,我认为您可以只编写自己的子类并覆盖它的looks like方法来返回一个适当配置的c3p0 DataSource,或者(更简单地)让c3p0 DataSource从c3p0.properties文件(或c3p0支持的几种配置样式中的任何一种)中获取其配置。继承的getter和setter将变得毫无意义--这些属性将被忽略,使用dropwizard的json或yaml工具配置DataSource的尝试也将被忽略。(您可以覆盖这些getter和setter,抛出一个异常来提醒您它们没有实现,但是即使您没有显式地配置它们,您也必须验证它们不会被调用。)唯一困难的部分是配置MetricRegistry,我假设是为了保持和监视您感兴趣的池的统计信息。但这并不太难:请参阅模板的ManagedPooledDataSource的start()方法,以及可以在c3p0 PooledDataSource上监视的所有统计信息。
您可能不需要扩展DataSourceFactory。只需编写一个实现PooledDataSourceFactory的单独类就足够了。此外,还有一个名为DatabaseConfiguration的类,它的最后一个提交消息是“向插件自定义DB连接池添加工具”。但我找不到这个类的任何示例或文档。很明显,你可以仅仅通过扩展c3p0来集成DataSourceFactory,而其他人已经拥有了suggested that。
https://stackoverflow.com/questions/41788103
复制相似问题