【发布时间】:2016-12-25 23:09:46
【问题描述】:
我正在从 Tomcat 8 服务器运行一个使用 Hibernate 的应用程序。我想使用与 Hibernate 不同的连接池,因为它们很明显它不适合在生产环境中使用。
此外,他们提到:
为了在应用服务器内部使用,您几乎总是应该配置 Hibernate 以从 JNDI 中注册的应用服务器 javax.sql.Datasource 获取连接。
看来我需要做两件事:
- 配置 Hibernate 以使用第三方连接池 -- Hibernate 推荐 C3PO
- 配置 Hibernate 以从注册在 JNDI 中的
javax.sql.Datasource对象获取连接
我一直在研究如何进行这些更改,并且遇到了this SO 问题。发帖人已经在使用 C3PO,并询问如何通过 JNDI Datasource 对象连接到他们的数据库。但是,他们遇到了问题,因为他们在按照回答者的步骤使用 JNDI 数据源时已经在使用 C3PO。发帖人在接受答案的 cmets 部分这样说:
是的,我一直在使用 c3p0 和 JNDI 做一些非常愚蠢的事情。我删除了所有 c3p0 配置,现在可以正常工作了。
Hibernate 建议使用第三方连接池,即 C3PO,并使用 JNDI 数据源来接收连接,然而,这似乎给这个用户带来了问题;他们甚至谈论同时使用它们,好像这是一个明显的错误。
那么我不能同时使用它们吗,还是应该按照 Hibernate 的建议?我要做的就是将 Hibernate 的默认连接池替换为用于生产环境的池,并将 Hibernate 配置为从 JNDI 中注册的javax.sql.Datasource 对象获取连接,正如他们所建议的那样。
【问题讨论】: