2010-05-31 61 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