一旦数据库被退回,hibernate就不会重新连接

pst*_*ton 7 hibernate

我发现在我们反弹(停止并启动)我们的数据库(postgresql 8.3)之后,我们使用hibernate(3.2.6)的应用程序无法重新获取连接,而是使用消息"broken pipe"获取SocketException .

我相信我们已配置为使用内置连接池.

如何在数据库重启后重新获取连接而不重新启动应用程序?

页.

Bin*_*mas 7

您想要的是连接池提供的称为连接测试的功能- 连接池应运行快速查询以验证它将要分发的连接是否过时.不幸的是,Hibernate的默认连接池类DriverManagerConnectionProvider不支持此功能.Hibernate团队强烈反对在生产代码中使用此连接池.

然而,Hibernate自己的连接池算法非常简陋.它旨在帮助您入门,不打算在生产系统中使用,甚至不用于性能测试.您应该使用第三方池以获得最佳性能和稳定性.

我的建议是切换到其他一些连接池实现.如果切换到C3P0(随Hibernate一起提供),可以按照此处的说明配置连接测试.如果您使用Apache DBCP,它可以让您按照此处的说明设置validationQuery .