我有4个Web应用程序,它们对Hibernate实现有共同的引用,但是在不同的Tomcat实例上运行。因此,例如,在Hibernate中配置的最小大小 3 (带c3p0
)的连接池将导致 12 连接打开(3为每个实例)当所有项目都在运行时。
我想与实例“共享”Hibernate实现(因此总是打开3个连接而不是12个),我想知道实现它的最佳解决方案。
任何提示?
由于
答案 0 :(得分:5)
我想与实例“共享”Hibernate实现(因此总是打开3个连接而不是12个),我想知道实现它的最佳解决方案。有什么提示吗?
这不是一个好主意。简而言之,连接池的大小应设置为包含足够的连接以提供传入的并发请求,而无需等待连接变为可用。有4个应用程序,您很可能需要3个以上的连接。你的逻辑错误(或不清楚)。
因此,我的提示是分配足够的资源并适当调整线程池和连接池的大小,以便为每个应用程序应该处理的并发请求提供服务,这样就不会耗尽池。
答案 1 :(得分:1)
一种方法可能是创建一个额外的后端服务,该服务运行Hibernate并通过Web服务连接到前端服务。这样就会有一个Hibernate实例。
答案 2 :(得分:0)
你不能这样做。每个Tomcat实例都在自己的JVM中运行,因此您无法在它们之间共享对象或类。
为什么不喜欢12个数据库连接?现代数据库系统能够处理数百万个连接。