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