From: <rm...@hy...> - 2010-02-10 19:17:12
|
Author: rmorgan Date: 2010-02-10 11:17:04 -0800 (Wed, 10 Feb 2010) New Revision: 14274 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=14274 Modified: trunk/src/org/hyperic/hq/product/servlet/filter/JMXFilterInitServlet.java Log: [HHQ-3726] Switch usage from Hashtable to WeakHashMap so that references to the classloader can be garbage collected on application reloads. We wrap the WeaskHashMap with a syncronized map to preserve prior behavior with the Hashtable. Modified: trunk/src/org/hyperic/hq/product/servlet/filter/JMXFilterInitServlet.java =================================================================== --- trunk/src/org/hyperic/hq/product/servlet/filter/JMXFilterInitServlet.java 2010-02-10 09:26:50 UTC (rev 14273) +++ trunk/src/org/hyperic/hq/product/servlet/filter/JMXFilterInitServlet.java 2010-02-10 19:17:04 UTC (rev 14274) @@ -27,9 +27,10 @@ import java.io.File; import java.util.ArrayList; -import java.util.Hashtable; +import java.util.WeakHashMap; +import java.util.Collections; +import java.util.Map; -import javax.management.InstanceAlreadyExistsException; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.ObjectName; @@ -63,11 +64,11 @@ private static JMXFilterInitServlet singleton; // ContextName -> JMXFilter - private static Hashtable filters = new Hashtable(); + private static Map filters = Collections.synchronizedMap(new WeakHashMap()); // CL -> JMXSessionListener - private static Hashtable listeners = new Hashtable(); + private static Map listeners = Collections.synchronizedMap(new WeakHashMap()); - private static Hashtable contextInfoByCL = new Hashtable(); + private static Map contextInfoByCL = Collections.synchronizedMap(new WeakHashMap()); public static void registerFilter( JMXFilter f ) { // XXX: We could use the thread class loader to make sure we don't |