首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Tomcat暖部署时出现无法注册JDBC驱动的解决方案

2013-03-12 
Tomcat热部署时出现无法注册JDBC驱动的解决方案使用Hudson做CI,进行自动部署时,出现如下异常:?The web app

Tomcat热部署时出现无法注册JDBC驱动的解决方案

使用Hudson做CI,进行自动部署时,出现如下异常:

?

The web application [/XXX] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered

? ? ? ?项目使用的数据库连接池是common-dbcp,然后在网上搜了一把,原因是从tomcat6.0.24之后加入了防止内存泄漏的机制,但是把server.xml中的<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />注释掉并不管用。

?

? ? ?后来在https://issues.apache.org/jira/browse/DBCP-332中找到解决方案,那就是重写BasicDataSource的close方法:

package com.ourcompany.util;import java.sql.DriverManager;import java.sql.SQLException;import org.apache.commons.dbcp.BasicDataSource;/** * @ClassName: OurDataSource * @Description: TODO(这里用一句话描述这个类的作用) * @author  */public class OurDataSource extends BasicDataSource {@Overridepublic synchronized void close() throws SQLException {DriverManager.deregisterDriver(DriverManager.getDriver(url));super.close();}}

??然后修改application.xml中的配置为:

<bean id="dataSource" destroy-method="close">

?重新打包,再次进行热部署,没有出现该异常信息,问题解决。

?在此做下记录。

? ? ??

热点排行