ASF Bugzilla – Attachment 18715 Details for
Bug 40246
HierarchyDynamicMBean missing unregister MBean
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch JMX MBean classes to perform automatic cleanup
jmx.diff (text/plain), 4.10 KB, created by
wing tung Leung
on 2006-08-14 12:25:34 UTC
(
hide
)
Description:
Patch JMX MBean classes to perform automatic cleanup
Filename:
MIME Type:
Creator:
wing tung Leung
Created:
2006-08-14 12:25:34 UTC
Size:
4.10 KB
patch
obsolete
>diff -Naur --strip-trailing-cr jmx.old/AbstractDynamicMBean.java jmx/AbstractDynamicMBean.java >--- jmx.old/AbstractDynamicMBean.java 2005-12-05 03:00:54.000000000 +0100 >+++ jmx/AbstractDynamicMBean.java 2006-08-14 14:02:41.530518400 +0200 >@@ -17,6 +17,7 @@ > package org.apache.log4j.jmx; > > //import java.lang.reflect.Constructor; >+import java.util.Collection; > import java.util.Iterator; > import javax.management.DynamicMBean; > import javax.management.AttributeList; >@@ -25,6 +26,10 @@ > import javax.management.MBeanRegistration; > import javax.management.MBeanServer; > import javax.management.ObjectName; >+import javax.management.InstanceAlreadyExistsException; >+import javax.management.InstanceNotFoundException; >+import javax.management.MBeanRegistrationException; >+import javax.management.NotCompliantMBeanException; > > import org.apache.log4j.Logger; > >@@ -33,6 +38,9 @@ > > String dClassName; > MBeanServer server; >+ >+ /** List of MBean names which are registered internally. */ >+ private Collection mbeanList = new java.util.LinkedList(); > > /** > * Enables the to get the values of several attributes of the Dynamic MBean. >@@ -112,10 +120,37 @@ > } > > >+ /** >+ * Registers MBean instance in the attached server. Must <em>NOT</em> >+ * be called before registration if this instance. >+ */ >+ protected >+ void registerMBean(Object mbean, ObjectName objectName) >+ throws InstanceAlreadyExistsException, MBeanRegistrationException, >+ NotCompliantMBeanException { >+ server.registerMBean(mbean, objectName); >+ mbeanList.add(objectName); >+ } > >+ /** >+ * Performs cleanup for deregistering this MBean. Default implementation >+ * unregisters MBean instances which are registered using >+ * {@link #registerMBean(Object mbean, ObjectName objectName)}. >+ */ > public > void preDeregister() { > getLogger().debug("preDeregister called."); >+ Iterator iterator = mbeanList.iterator(); >+ while (iterator.hasNext()) { >+ ObjectName name = (ObjectName) iterator.next(); >+ try { >+ server.unregisterMBean(name); >+ } catch (InstanceNotFoundException e) { >+ getLogger().warn("Missing MBean " + name.getCanonicalName()); >+ } catch (MBeanRegistrationException e) { >+ getLogger().warn("Failed unregistering " + name.getCanonicalName()); >+ } >+ } > } > > public >diff -Naur --strip-trailing-cr jmx.old/AppenderDynamicMBean.java jmx/AppenderDynamicMBean.java >--- jmx.old/AppenderDynamicMBean.java 2006-08-14 13:42:53.782620000 +0200 >+++ jmx/AppenderDynamicMBean.java 2006-08-14 14:00:04.344496000 +0200 >@@ -192,7 +192,7 @@ > try { > LayoutDynamicMBean appenderMBean = new LayoutDynamicMBean(layout); > objectName = new ObjectName("log4j:appender="+name); >- server.registerMBean(appenderMBean, objectName); >+ registerMBean(appenderMBean, objectName); > > dAttributes.add(new MBeanAttributeInfo("appender="+name, > "javax.management.ObjectName", >diff -Naur --strip-trailing-cr jmx.old/HierarchyDynamicMBean.java jmx/HierarchyDynamicMBean.java >--- jmx.old/HierarchyDynamicMBean.java 2006-08-14 13:42:49.967134000 +0200 >+++ jmx/HierarchyDynamicMBean.java 2006-08-14 14:12:29.305697600 +0200 >@@ -117,7 +117,7 @@ > try { > LoggerDynamicMBean loggerMBean = new LoggerDynamicMBean(logger); > objectName = new ObjectName("log4j", "logger", name); >- server.registerMBean(loggerMBean, objectName); >+ registerMBean(loggerMBean, objectName); > > NotificationFilterSupport nfs = new NotificationFilterSupport(); > nfs.enableType(ADD_APPENDER+logger.getName()); >diff -Naur --strip-trailing-cr jmx.old/LoggerDynamicMBean.java jmx/LoggerDynamicMBean.java >--- jmx.old/LoggerDynamicMBean.java 2005-12-05 03:00:52.000000000 +0100 >+++ jmx/LoggerDynamicMBean.java 2006-08-14 13:59:59.807972800 +0200 >@@ -257,7 +257,7 @@ > try { > AppenderDynamicMBean appenderMBean = new AppenderDynamicMBean(appender); > objectName = new ObjectName("log4j", "appender", name); >- server.registerMBean(appenderMBean, objectName); >+ registerMBean(appenderMBean, objectName); > > dAttributes.add(new MBeanAttributeInfo("appender="+name, > "javax.management.ObjectName",
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 40246
: 18715 |
20072