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="; }