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
|