2012-03-12 17 views
6

Chúng tôi đang sử dụng trình điều khiển UCP Oracle (Oracle Universal Connection Pool) trong tomcat 6. Cấu hình ít nhiều được cấu hình như trong Oracles Howto. Vấn đề là trình điều khiển bắt đầu rất nhiều chủ đề (Thread-0 đến 57, UCP-worker-thread-1 đến 24) không dừng lại khi máy chủ tắt - tomcat phát ra vô số thông báo lỗi như sau:Trình điều khiển UCP Oracle và tomcat: chủ đề không dừng

Ứng dụng web [/ xxx] dường như đã bắt đầu một chuỗi có tên [Timer-17] nhưng đã không dừng được. Điều này rất có khả năng gây ra rò rỉ bộ nhớ .

Bất kỳ ý tưởng nào về cách giải quyết vấn đề này?

Trả lời

2

tôi đã cùng một vấn đề và cố gắng khắc phục điều này bằng cách thêm đoạn mã sau vào ServletContextListener tôi:

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

tham khảo: xem "Kiểm soát Vòng đời của một kết nối" [trong Oracle tài liệu UCP] (http://docs.oracle.com/cd/E11882_01/java.112/e12265/manage.htm#BABFBFDE). – ochedru