Update of /var/cvs/src/org/mmbase/cache
In directory james.mmbase.org:/tmp/cvs-serv6807
Modified Files:
CacheManager.java
Log Message:
MMB-1107. Also unregister the beans on shutdown
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/cache
See also: http://www.mmbase.org/jira/browse/MMB-1107
Index: CacheManager.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/cache/CacheManager.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- CacheManager.java 11 Jul 2008 12:46:44 -0000 1.28
+++ CacheManager.java 18 Jul 2008 05:27:19 -0000 1.29
@@ -27,7 +27,7 @@
* Cache manager manages the static methods of [EMAIL PROTECTED] Cache}. If
you prefer you can call them on this in stead.
*
* @since MMBase-1.8
- * @version $Id: CacheManager.java,v 1.28 2008/07/11 12:46:44 michiel Exp $
+ * @version $Id: CacheManager.java,v 1.29 2008/07/18 05:27:19 michiel Exp $
*/
public abstract class CacheManager {
@@ -99,22 +99,33 @@
public static <K,V> Cache<K,V> putCache(Cache<K,V> cache) {
Cache old = caches.put(cache.getName(), cache);
configure(configReader, cache.getName());
- Hashtable<String, String> props = new Hashtable<String, String>();
- props.put("type", "CacheMBean");
- props.put("mmb",
org.mmbase.module.core.MMBase.getMMBase().getMachineName());
- props.put("name", cache.getName());
+ ObjectName name = getObjectName(cache);
try {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-
- ObjectName name = new ObjectName("org.mmbase.cache", props);
mbs.registerMBean(cache, name);
} catch (JMException jmo) {
- log.warn("" + props + " " + jmo.getClass() + " " +
jmo.getMessage());
+ log.warn("" + name + " " + jmo.getClass() + " " +
jmo.getMessage());
}
return old;
}
/**
+ * @since MMBase-1.9
+ */
+ private static ObjectName getObjectName(Cache cache) {
+ Hashtable<String, String> props = new Hashtable<String, String>();
+ try {
+ props.put("type", "CacheMBean");
+ props.put("mmb",
org.mmbase.module.core.MMBase.getMMBase().getMachineName());
+ props.put("name", cache.getName());
+ return new ObjectName("org.mmbase.cache", props);
+ } catch (MalformedObjectNameException mfone) {
+ log.warn("" + props + " " + mfone);
+ return null;
+ }
+ }
+
+ /**
* Configures the caches using a config File. There is only one
* config file now so the argument is a little overdone, but it
* doesn't harm.
@@ -253,9 +264,16 @@
* @since MMBase-1.8.1
*/
public static void shutdown() {
- log.info("Clearing all caches");
+ log.info("Clearing and unregistering all caches");
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
for(Cache<?,?> cache : caches.values()) {
cache.clear();
+ ObjectName name = getObjectName(cache);
+ try {
+ mbs.unregisterMBean(name);
+ } catch (JMException jmo) {
+ log.warn("" + name + " " + jmo.getClass() + " " +
jmo.getMessage());
+ }
}
caches.clear();
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs