Author: markt
Date: Wed Aug 17 17:10:25 2011
New Revision: 1158834

URL: http://svn.apache.org/viewvc?rev=1158834&view=rev
Log:
Ensure MBeans are de-registered on pool close.

Modified:
    
commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
    
commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java

Modified: 
commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
URL: 
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java?rev=1158834&r1=1158833&r2=1158834&view=diff
==============================================================================
--- 
commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
 (original)
+++ 
commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
 Wed Aug 17 17:10:25 2011
@@ -268,6 +268,7 @@ public class GenericKeyedObjectPool<K,T>
                     ObjectName oname =
                         new ObjectName(ONAME_BASE + jmxNamePrefix + i);
                     mbs.registerMBean(this, oname);
+                    this.oname = oname;
                     registered = true;
                 } catch (MalformedObjectNameException e) {
                     if (GenericObjectPoolConfig.DEFAULT_JMX_NAME_PREFIX.equals(
@@ -1098,6 +1099,7 @@ public class GenericKeyedObjectPool<K,T>
          evictionIterator = null;
          evictionKeyIterator = null;
          startEvictor(-1L);
+         ManagementFactory.getPlatformMBeanServer().unregisterMBean(oname);
      }
 
      
@@ -1950,6 +1952,8 @@ public class GenericKeyedObjectPool<K,T>
     private Object maxBorrowWaitTimeMillisLock = new Object();
     private volatile long maxBorrowWaitTimeMillis = 0;
 
+    private ObjectName oname = null;
+
     private static final String ONAME_BASE =
         "org.apache.commoms.pool2:type=GenericKeyedObjectPool,name=";
 }

Modified: 
commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java
URL: 
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java?rev=1158834&r1=1158833&r2=1158834&view=diff
==============================================================================
--- 
commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java
 (original)
+++ 
commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericObjectPool.java
 Wed Aug 17 17:10:25 2011
@@ -222,6 +222,7 @@ public class GenericObjectPool<T> extend
                     ObjectName oname =
                         new ObjectName(ONAME_BASE + jmxNamePrefix + i);
                     mbs.registerMBean(this, oname);
+                    this.oname = oname;
                     registered = true;
                 } catch (MalformedObjectNameException e) {
                     if (GenericObjectPoolConfig.DEFAULT_JMX_NAME_PREFIX.equals(
@@ -1005,6 +1006,7 @@ public class GenericObjectPool<T> extend
         super.close();
         clear();
         startEvictor(-1L);
+        ManagementFactory.getPlatformMBeanServer().unregisterMBean(oname);
     }
 
     /**
@@ -1550,6 +1552,8 @@ public class GenericObjectPool<T> extend
     private Object maxBorrowWaitTimeMillisLock = new Object();
     private volatile long maxBorrowWaitTimeMillis = 0;
 
+    private ObjectName oname = null;
+
     private static final String ONAME_BASE =
         "org.apache.commoms.pool2:type=GenericObjectPool,name=";
 }


Reply via email to