Repository: logging-log4j2
Updated Branches:
  refs/heads/master 3930ee833 -> 74942b3bd


[LOG4J2-2304] Log4j2 2.8.2 JMX unregister NullPointerException.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/74942b3b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/74942b3b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/74942b3b

Branch: refs/heads/master
Commit: 74942b3bdb447fda6df0f11819fca85f7303c511
Parents: 3930ee8
Author: Gary Gregory <garydgreg...@gmail.com>
Authored: Wed Apr 4 11:04:31 2018 -0600
Committer: Gary Gregory <garydgreg...@gmail.com>
Committed: Wed Apr 4 11:04:31 2018 -0600

----------------------------------------------------------------------
 .../apache/logging/log4j/core/jmx/Server.java   | 38 +++++++++++---------
 src/changes/changes.xml                         |  6 ++++
 2 files changed, 27 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74942b3b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
index 09bcd48..04eaa3d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java
@@ -54,7 +54,8 @@ import org.apache.logging.log4j.util.PropertiesUtil;
  */
 public final class Server {
 
-    /**
+    private static final String CONTEXT_NAME_ALL = "*";
+       /**
      * The domain part, or prefix ({@value}) of the {@code ObjectName} of all 
MBeans that instrument Log4J2 components.
      */
     public static final String DOMAIN = "org.apache.logging.log4j2";
@@ -198,8 +199,7 @@ public final class Server {
             LOGGER.debug("JMX disabled for Log4j2. Not unregistering MBeans.");
             return;
         }
-        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-        unregisterMBeans(mbs);
+        unregisterMBeans(ManagementFactory.getPlatformMBeanServer());
     }
 
     /**
@@ -207,16 +207,18 @@ public final class Server {
      *
      * @param mbs the MBean server to unregister from.
      */
-    public static void unregisterMBeans(final MBeanServer mbs) {
-        unregisterStatusLogger("*", mbs);
-        unregisterContextSelector("*", mbs);
-        unregisterContexts(mbs);
-        unregisterLoggerConfigs("*", mbs);
-        unregisterAsyncLoggerRingBufferAdmins("*", mbs);
-        unregisterAsyncLoggerConfigRingBufferAdmins("*", mbs);
-        unregisterAppenders("*", mbs);
-        unregisterAsyncAppenders("*", mbs);
-    }
+       public static void unregisterMBeans(final MBeanServer mbs) {
+               if (mbs != null) {
+                       unregisterStatusLogger(CONTEXT_NAME_ALL, mbs);
+                       unregisterContextSelector(CONTEXT_NAME_ALL, mbs);
+                       unregisterContexts(mbs);
+                       unregisterLoggerConfigs(CONTEXT_NAME_ALL, mbs);
+                       unregisterAsyncLoggerRingBufferAdmins(CONTEXT_NAME_ALL, 
mbs);
+                       
unregisterAsyncLoggerConfigRingBufferAdmins(CONTEXT_NAME_ALL, mbs);
+                       unregisterAppenders(CONTEXT_NAME_ALL, mbs);
+                       unregisterAsyncAppenders(CONTEXT_NAME_ALL, mbs);
+               }
+       }
 
     /**
      * Returns the {@code ContextSelector} of the current {@code 
Log4jContextFactory}.
@@ -333,14 +335,16 @@ public final class Server {
         try {
             final ObjectName pattern = new ObjectName(search);
             final Set<ObjectName> found = mbs.queryNames(pattern, null);
-            if (found.isEmpty()) {
+            if (found == null || found.isEmpty()) {
                LOGGER.trace("Unregistering but no MBeans found matching '{}'", 
search);
             } else {
                LOGGER.trace("Unregistering {} MBeans: {}", found.size(), 
found);
             }
-            for (final ObjectName objectName : found) {
-                mbs.unregisterMBean(objectName);
-            }
+                       if (found != null) {
+                               for (final ObjectName objectName : found) {
+                                       mbs.unregisterMBean(objectName);
+                               }
+                       }
         } catch (final InstanceNotFoundException ex) {
             LOGGER.debug("Could not unregister MBeans for " + search + ". 
Ignoring " + ex);
         } catch (final Exception ex) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/74942b3b/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 53469c8..f519ca3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -112,6 +112,9 @@
       <action issue="LOG4J2-2302" dev="ggregory" type="update">
         Status logger should show the Log4j name and version when initializing 
itself.
       </action>
+      <action issue="LOG4J2-2304" dev="ggregory" type="update" 
due-to="wumengsheng">
+        Log4j2 2.8.2 JMX unregister NullPointerException.
+      </action>
     </release>
     <release version="2.11.1" date="2018-MM-DD" description="GA Release 
2.11.1">
       <action issue="LOG4J2-2268" dev="rgoers" type="fix" due-to="Tilman 
Hausherr">
@@ -126,6 +129,9 @@
       <action issue="LOG4J2-2302" dev="ggregory" type="update">
         Status logger should show the Log4j name and version when initializing 
itself.
       </action>
+      <action issue="LOG4J2-2304" dev="ggregory" type="update" 
due-to="wumengsheng">
+        Log4j2 2.8.2 JMX unregister NullPointerException.
+      </action>
     </release>
     <release version="2.11.0" date="2018-xx-xx" description="GA Release 
2.11.0">
       <action issue="LOG4J2-2104" dev="rgoers" type="fix">

Reply via email to