2012-03-12 16 views
6

को रोकने में विफल होने वाले थ्रेड हम टॉमकैट 6 में ओरेकल यूसीपी ड्राइवर (ओरेकल यूनिवर्सल कनेक्शन पूल) का उपयोग कर रहे हैं। यह ओरेकल Howto में कम या ज्यादा कॉन्फ़िगर किया गया है। समस्या यह है कि चालक बहुत सारे धागे (थ्रेड -0 से 57, यूसीपी-वर्कर-थ्रेड -1 से 24) शुरू करता है जो सर्वर बंद होने पर रोका नहीं जाता है - टॉमकैट इस तरह के त्रुटि संदेशों के भार को उत्सर्जित करता है:ओरेकल यूसीपी ड्राइवर और टोमकैट:

वेब एप्लिकेशन [/ xxx] ने नामक धागा शुरू किया है [टाइमर -17] लेकिन इसे रोकने में विफल रहा है। यह स्मृति रिसाव बनाने की संभावना है।

कोई विचार यह कैसे निपटाना है?

उत्तर

2

मैं एक ही समस्या थी और मेरे 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

संदर्भ: देखें "एक कनेक्शन के जीवनचक्र को नियंत्रित करना" [ओरेकल यूसीपी दस्तावेज में] (http://docs.oracle.com/cd/E11882_01/java.112/e12265/manage.htm#BABFBFDE)। – ochedru

संबंधित मुद्दे