I do not think this is going to work. See my fix for the JNDI lookup loading.
Because you have a hard reference in the LoggerContext class to our JMX Server class, you still have a dependency on JMX. We need to refer to our JMX Server class dynamically, using reflection for example. Gary ---------- Forwarded message ---------- From: <[email protected]> Date: Wed, Jul 16, 2014 at 9:31 AM Subject: svn commit: r1611003 - in /logging/log4j/log4j2/trunk: log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java src/changes/changes.xml To: [email protected] Author: rpopma Date: Wed Jul 16 13:31:07 2014 New Revision: 1611003 URL: http://svn.apache.org/r1611003 Log: LOG4J2-716: automatically disable log4j JMX when detecting we are running on Android Added: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java (with props) Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java logging/log4j/log4j2/trunk/src/changes/changes.xml Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java?rev=1611003&r1=1611002&r2=1611003&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java Wed Jul 16 13:31:07 2014 @@ -41,6 +41,7 @@ import org.apache.logging.log4j.core.con import org.apache.logging.log4j.core.config.Reconfigurable; import org.apache.logging.log4j.core.jmx.Server; import org.apache.logging.log4j.core.util.Assert; +import org.apache.logging.log4j.core.util.Environment; import org.apache.logging.log4j.core.util.NetUtils; import org.apache.logging.log4j.message.MessageFactory; import org.apache.logging.log4j.spi.AbstractLogger; @@ -365,10 +366,12 @@ public class LoggerContext extends Abstr firePropertyChangeEvent(new PropertyChangeEvent(this, PROPERTY_CONFIG, prev, config)); - try { - Server.reregisterMBeansAfterReconfigure(); - } catch (final Exception ex) { - LOGGER.error("Could not reconfigure JMX", ex); + if (!Environment.isAndroid()) { // LOG4J2-716: Android has no java.lang.management + try { + Server.reregisterMBeansAfterReconfigure(); + } catch (final Exception ex) { + LOGGER.error("Could not reconfigure JMX", ex); + } } return prev; } Added: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java?rev=1611003&view=auto ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java (added) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java Wed Jul 16 13:31:07 2014 @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache license, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the license for the specific language governing permissions and + * limitations under the license. + */ + +package org.apache.logging.log4j.core.util; + +/** + * Runtime environment-related utility methods. + */ +public final class Environment { + private Environment() { + } + + /** + * Returns {@code true} if we are running on Android, {@code false} otherwise + * @return {@code true} if system property "java.specification.vendor" contains "android" + */ + public static boolean isAndroid() { + return System.getProperty("java.specification.vendor", "x").toLowerCase().contains("android"); + } +} Propchange: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Environment.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1611003&r1=1611002&r2=1611003&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/src/changes/changes.xml (original) +++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed Jul 16 13:31:07 2014 @@ -22,6 +22,9 @@ </properties> <body> <release version="?" date="2014-mm-dd" description="?"> + <action issue="LOG4J2-716" dev="popmarem" type="fix"> + Automatically disable log4j JMX when detecting we are running on Android. + </action> <action issue="LOG4J2-657" dev="popmarem" type="fix" due-to="Stefan Wehner"> Fixed AbstractDatabaseManager to close connection on writeInternal error. </action> -- E-Mail: [email protected] | [email protected] Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory
