2010-05-31 41 views
1
创建内存泄漏

我已经为web应用程序的tomcat里面一个JDBCRealm,当我重新加载它,我得到这个从Tomcat:
SEVERE: A web application registered the JBDC 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.的MySQL在Tomcat中

我使用Tomcat 6.0.24,与MySQL连接器5.1 .10 ,,,

有没有办法清理它,所以tomcat将不会显示SEVERE消息?

+2

这不完全是内存泄漏,它是Tomcat阻止其中一个的警告。 – Yishai 2010-05-31 01:37:33

回答

0

这不是泄漏,或者至少它是一个无关紧要的东西。如果你有一个单例对象(JDBC驱动程序),并且它在应用程序结束之前从不发布,那么它是否重要?
数据库将在给定时间后关闭所有未决连接。

如果你感到困扰,你可以通过重写close方法这种方法解决它:

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

和使用您的XBasicDataSource。

+0

我应该在哪里注入这段代码? – mabuzer 2010-05-31 05:45:53

+0

@mabuzer创建一个Jar文件并将其放在Tomcat的lib文件夹中。使用它作为你的DataSource – 2010-05-31 15:32:02

+0

很酷,它的工作,thanx Romain – mabuzer 2010-06-01 06:52:32