2012-03-12 7 views
6

Estamos utilizando Oracle el controlador UCP (Oracle Universal Connection Pool) en tomcat 6. Está más o menos configurado como en Oracles Howto. El problema es que el controlador inicia muchos hilos (Thread-0 a 57, UCP-worker-thread-1 a 24) que no se detienen cuando el servidor se apaga: tomcat emite un montón de mensajes de error como este:Controlador UCP de Oracle y tomcat: subprocesos que no se pueden detener

La aplicación web [/ xxx] parece haber iniciado un hilo llamado [Timer-17] pero no ha podido detenerlo. Es muy probable que cree una pérdida de memoria .

¿Alguna idea de cómo lidiar con esto?

Respuesta

2

que tenían el mismo problema y lograron solucionar agregando el siguiente código en mi ServletContextListener:

import oracle.ucp.admin.UniversalConnectionPoolManager; 
import oracle.ucp.admin.UniversalConnectionPoolManagerImpl; 

public class MyContextListener implements ServletContextListener { 
    /* ... */ 

    @Override 
    public void contextDestroyed(ServletContextEvent sce) { 
     // Your shutdown sequence here 
     /* ... */ 

     // Shutdown UCP if present, to avoid warnings about thread leaks 
     UniversalConnectionPoolManager ucpManager = UniversalConnectionPoolManagerImpl.getUniversalConnectionPoolManager(); 
     if (ucpManager != null) { 
      String[] poolNames = ucpManager.getConnectionPoolNames(); 
      if (poolNames != null) { 
       for (String poolName : poolNames) { 
        ucpManager.destroyConnectionPool(poolName); 
       } 
      } 
     } 
    } 

} 
+0

Referencia: ver "Control del ciclo de vida de una conexión" [en Oracle documentación UCP] (http://docs.oracle.com/cd/E11882_01/java.112/e12265/manage.htm#BABFBFDE). – ochedru

Cuestiones relacionadas