0

我对 Tomcat 中的 proxool 和 oracle 驱动程序有疑问。

我使用的 web 应用程序包含一个 webservice jar 文件,它使用 metro 和一个 servlet 来初始化/启动 proxool 池。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

有人有想法吗?

问候蒂莫

4

1 回答 1

0

您必须将 Oracle 驱动程序添加到 Tomcat 实例并使用 Oracle 数据源配置 Tomcat JNDI

这样,当应用程序终止时,驱动程序将保持活动状态,并且 Tomcat 将控制数据库连接的池。您的问题的原因是一些数据库驱动程序“挂钩”到虚拟机中。这意味着 Tomcat 在重新部署期间无法卸载类——周围仍然有引用。

我什至建议尝试将 proxool 移动到 Tomcat 服务器中,并让 Tomcat 为您管理池。即使您泄漏连接,这也会使热部署更快、更可靠。

于 2009-05-08T09:30:11.273 回答