Java MySQL在Tomcat中创建内存泄漏

Java MySQL在Tomcat中创建内存泄漏,java,mysql,tomcat,Java,Mysql,Tomcat,我在tomcat内部为web应用程序设置了一个JDBCRealm,当我重新加载它时,我从tomcat那里得到了这个信息: SEVERE:web应用程序注册了JBDC驱动程序[com.mysql.jdbc.driver],但在web应用程序停止时未能注销它。为了防止内存泄漏,JDBC驱动程序已被强制注销。 我使用tomcat 6.0.24和MySQL连接器5.1.10 有没有办法清理它,这样tomcat就不会显示严重的消息了?这不是泄漏,或者至少是无关紧要的泄漏。如果您有一个单例对象(JDBC驱动

我在tomcat内部为web应用程序设置了一个
JDBCRealm
,当我重新加载它时,我从tomcat那里得到了这个信息:
SEVERE:web应用程序注册了JBDC驱动程序[com.mysql.jdbc.driver],但在web应用程序停止时未能注销它。为了防止内存泄漏,JDBC驱动程序已被强制注销。

我使用tomcat 6.0.24和MySQL连接器5.1.10


有没有办法清理它,这样tomcat就不会显示严重的消息了?

这不是泄漏,或者至少是无关紧要的泄漏。如果您有一个单例对象(JDBC驱动程序),并且它在应用程序完成之前从未发布过,这有关系吗?
数据库将在给定的时间后关闭所有挂起的连接

如果它真的困扰您,您可以通过以下方式重写close方法来修复它:

public class XBasicDataSource extends BasicDataSource {
    @Override
    public synchronized void close() throws SQLException {
        DriverManager.deregisterDriver(DriverManager.getDriver(url));
        super.close();
    }
}

并使用您的XBasicDataSource。

这不完全是内存泄漏,而是Tomcat阻止了内存泄漏的警告。@mabuzer创建一个Jar文件,并将其放入Tomcat的lib文件夹中。将其用作您的数据源