我在Tomcat中遇到有关proxool和oracle驱动程序的问题。
我使用的Web应用程序包含一个使用metro和servlet来初始化/启动proxool池的webservice jar文件。 proxool池配置了oracle连接。调用服务时,它从池中获取连接,执行语句并返回。之后关闭结果集,语句和服务方法中的连接。
当我现在尝试热取消部署Web应用程序时,servlet通过ProxoolFacade.shutdown()停止proxool池;在它的破坏方法。
问题是,热取消部署无法完成,因为无法从解压缩的Web应用程序的文件夹中删除Oracle驱动程序ojdbc5.jar。
尝试使用SQL服务器数据库和jtds驱动程序,它没有这个问题。
二手版本: Apache Tomcat 6.0.18 Oracle 11g JDBC驱动程序11.1.0.6.0 Proxool 0.9.1
有人有想法吗?
关心蒂莫
答案 0 :(得分:0)
您必须将Oracle驱动程序添加到Tomcat实例并配置Tomcat JNDI with an Oracle datasoure。
这样,当应用程序终止时,驱动程序将保持活动状态,Tomcat将控制数据库连接的池化。您遇到问题的原因是某些数据库驱动程序“挂钩”到VM中。这意味着Tomcat在重新部署期间无法卸载类 - 仍然存在引用。
我甚至建议尝试将proxool移动到Tomcat服务器中,让Tomcat为您管理池。即使您泄漏了连接,这也可以使热部署更快更可靠。