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

Reply via email to