代码之家  ›  专栏  ›  技术社区  ›  mabuzer

mysql在tomcat中创建内存泄漏

  •  1
  • mabuzer  · 技术社区  · 14 年前

    我已经设定了 JDBCRealm 对于Tomcat内部的Web应用程序,当我重新加载它时,我从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.

    我使用Tomcat6.0.24,带有mysql连接器5.1.10,,

    有没有办法清理它,这样Tomcat就不会显示了 SEVERE 消息?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Romain Hippeau    14 年前

    这不是泄漏,或者至少是无关紧要的泄漏。如果您有一个singleton对象(JDBC驱动程序),并且它在应用程序完成之前永远不会被释放,那么这有关系吗?
    数据库将在给定的时间后关闭所有挂起的连接。

    如果它确实困扰您,您可以通过重写close方法来修复它:

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

    并使用XbasicDataSource。