[jboss-svn-commits] JBoss Common SVN: r3037 - jboss-logmanager/branches/1.0/src/main/java/org/jboss/logmanager.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Mar 8 01:58:00 EST 2009


Author: david.lloyd at jboss.com
Date: 2009-03-08 01:57:59 -0500 (Sun, 08 Mar 2009)
New Revision: 3037

Modified:
   jboss-logmanager/branches/1.0/src/main/java/org/jboss/logmanager/LogManager.java
   jboss-logmanager/branches/1.0/src/main/java/org/jboss/logmanager/LoggerNode.java
Log:
Work around another performance-killing sun bug

Modified: jboss-logmanager/branches/1.0/src/main/java/org/jboss/logmanager/LogManager.java
===================================================================
--- jboss-logmanager/branches/1.0/src/main/java/org/jboss/logmanager/LogManager.java	2009-03-08 05:24:22 UTC (rev 3036)
+++ jboss-logmanager/branches/1.0/src/main/java/org/jboss/logmanager/LogManager.java	2009-03-08 06:57:59 UTC (rev 3037)
@@ -50,11 +50,11 @@
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
             @SuppressWarnings ({"unchecked"})
             public Void run() {
+                /* This mysterious-looking hack is designed to trick JDK logging into not leaking classloaders and
+                   so forth when adding levels, by simply shutting down the craptastic level name "registry" that it keeps.
+                */
                 final Class<java.util.logging.Level> lc = java.util.logging.Level.class;
                 try {
-                    /* This mysterious-looking hack is designed to trick JDK logging into not leaking classloaders and
-                       so forth when adding levels, by simply shutting down the craptastic level name "registry" that it keeps.
-                    */
                     synchronized(lc) {
                         final Field knownField = lc.getDeclaredField("known");
                         knownField.setAccessible(true);
@@ -66,6 +66,17 @@
                 } catch (Exception e) {
                     // ignore; just don't install
                 }
+                /* Next hack: the default Sun JMX implementation has a horribly inefficient log implementation which
+                   kills performance if a custom logmanager is used.  We'll just blot that out.
+                 */
+                try {
+                    final Class<?> traceManagerClass = Class.forName("com.sun.jmx.trace.Trace");
+                    final Field outField = traceManagerClass.getDeclaredField("out");
+                    outField.setAccessible(true);
+                    outField.set(null, null);
+                } catch (Exception e) {
+                    // ignore; just skip it
+                }
                 return null;
             }
         });

Modified: jboss-logmanager/branches/1.0/src/main/java/org/jboss/logmanager/LoggerNode.java
===================================================================
--- jboss-logmanager/branches/1.0/src/main/java/org/jboss/logmanager/LoggerNode.java	2009-03-08 05:24:22 UTC (rev 3036)
+++ jboss-logmanager/branches/1.0/src/main/java/org/jboss/logmanager/LoggerNode.java	2009-03-08 06:57:59 UTC (rev 3037)
@@ -24,8 +24,6 @@
 
 import java.lang.ref.WeakReference;
 import java.util.concurrent.ConcurrentMap;
-import java.util.Map;
-import java.util.HashMap;
 import static org.jboss.logmanager.ConcurrentReferenceHashMap.ReferenceType.WEAK;
 import static org.jboss.logmanager.ConcurrentReferenceHashMap.ReferenceType.STRONG;
 




More information about the jboss-svn-commits mailing list