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">