我发现在我们反弹(停止并启动)我们的数据库(postgresql 8.3)之后,我们使用hibernate(3.2.6)的应用程序无法重新获取连接,而是使用消息"broken pipe"获取SocketException .
我相信我们已配置为使用内置连接池.
如何在数据库重启后重新获取连接而不重新启动应用程序?
页.
您想要的是连接池提供的称为连接测试的功能- 连接池应运行快速查询以验证它将要分发的连接是否过时.不幸的是,Hibernate的默认连接池类DriverManagerConnectionProvider不支持此功能.Hibernate团队强烈反对在生产代码中使用此连接池.
然而,Hibernate自己的连接池算法非常简陋.它旨在帮助您入门,不打算在生产系统中使用,甚至不用于性能测试.您应该使用第三方池以获得最佳性能和稳定性.
我的建议是切换到其他一些连接池实现.如果切换到C3P0(随Hibernate一起提供),可以按照此处的说明配置连接测试.如果您使用Apache DBCP,它可以让您按照此处的说明设置validationQuery .
| 归档时间: |
|
| 查看次数: |
8334 次 |
| 最近记录: |