c3p 0,tomcat 메모리 유출 솔 루 션 공유

http://stackoverflow.com/questions/3320400/to-prevent-a-memory-leak-the-jdbc-driver-has-been-forcibly-unregistered
/**   * @author Aray Chou   *         Email: Aray(dot)Chou(dot)CN(at)gmail(dot)com   *         Replace "(dot)" with "." and replace "(at)" with "@"   */ import   javax.servlet.ServletContextEvent; import   javax.servlet.ServletContextListener; import   javax.servlet.annotation.WebListener; import   javax.sql.DataSource;
  import   com.mchange.v2.c3p0.DataSources;
  /**   * C3P0 context ( tomcat reload context), , 。Tomcat :   * <br />SEVERE: The web application [/xxx] appears to have started a thread named [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1] but has failed to stop it. This is very likely to create a memory leak.     *  context c3p0 , 。     *  ,JDBC ( ojdbc6.jar) $TOMCAT_HOME/lib , WEB-INF/lib , JDBC 。 Tomcat :   * SEVERE: A web application registered the JBDC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.   */ @WebListener () public   class   DBCloser  implements   ServletContextListener {
       /*       * (non-Javadoc)             * @see       * javax.servlet.ServletContextListener#contextInitialized(javax.servlet       * .ServletContextEvent)       */      @Override      public void contextInitialized(ServletContextEvent sce) {      }
       /*       * (non-Javadoc)             * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.       * ServletContextEvent)       */      @Override      public   void   contextDestroyed(ServletContextEvent sce) {                     //TODO  , dataSource          DataSource dataSource =  null ;                     try          {              // c3p0              DataSources.destroy(dataSource);          }          catch   (Exception e)          {              e.printStackTrace();          }
                      // , Tomcat memory leak          try   {              Thread.sleep( 1000 );          catch   (InterruptedException e) {              e.printStackTrace();          }      }
  }

좋은 웹페이지 즐겨찾기