Author: rmannibucau
Date: Thu Jan 17 12:44:12 2013
New Revision: 1434646

URL: http://svn.apache.org/viewvc?rev=1434646&view=rev
Log:
OPENEJB-1990 openejb.jul.forceReload property

Modified:
    
tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java
    
tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java

Modified: 
tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java
URL: 
http://svn.apache.org/viewvc/tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java?rev=1434646&r1=1434645&r2=1434646&view=diff
==============================================================================
--- 
tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java
 (original)
+++ 
tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java
 Thu Jan 17 12:44:12 2013
@@ -74,17 +74,20 @@ public final class OpenEJB {
             }
             initialized = new InitializationException("Initialized at "+new 
Date()).fillInStackTrace();
 
-            Logger.configure();
-            Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
"org.apache.openejb.util.resources");
-
             try {
                 SystemInstance.init(initProps);
+
+                // do it after having gotten the properties
+                Logger.configure();
+
                 OptionsLog.install();
             } catch (Exception e) {
                 throw new OpenEJBException(e);
             }
             SystemInstance system = SystemInstance.get();
 
+            final Logger logger = 
Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
"org.apache.openejb.util.resources");
+
             system.setComponent(DeploymentExceptionManager.class, new 
DeploymentExceptionManager());
 
             system.setComponent(ApplicationServer.class, appServer);
@@ -270,7 +273,6 @@ public final class OpenEJB {
     }
 
     private static Messages messages = new 
Messages("org.apache.openejb.util.resources");
-    private static Logger logger = 
Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
"org.apache.openejb.util.resources");
 
     /**
      * 2 usages
@@ -279,11 +281,11 @@ public final class OpenEJB {
         if (isInitialized()) {
             if (instance != null){
                 String msg = messages.message("startup.alreadyInitialized");
-                logger.error(msg, instance.initialized);
+                logger().error(msg, instance.initialized);
                 throw new OpenEJBException(msg, instance.initialized);
             } else {
                 String msg = messages.message("startup.alreadyInitialized");
-                logger.error(msg);
+                logger().error(msg);
                 throw new OpenEJBException(msg);
             }
         } else {
@@ -291,6 +293,10 @@ public final class OpenEJB {
         }
     }
 
+    private static Logger logger() { // do it lazily to avoid to trigger 
logger creation before properties are read + generally useless
+        return Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
"org.apache.openejb.util.resources");
+    }
+
     /**
      * 1 usages
      */

Modified: 
tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java
URL: 
http://svn.apache.org/viewvc/tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java?rev=1434646&r1=1434645&r2=1434646&view=diff
==============================================================================
--- 
tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java
 (original)
+++ 
tomee/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java
 Thu Jan 17 12:44:12 2013
@@ -16,11 +16,12 @@
  */
 package org.apache.openejb.util;
 
+import org.apache.openejb.loader.Options;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.log.ConsoleColorHandler;
 import org.apache.openejb.log.SingleLineFormatter;
-import org.apache.webbeans.logger.JULLoggerFactory;
 
+import java.lang.reflect.Field;
 import java.util.logging.ConsoleHandler;
 import java.util.logging.LogManager;
 
@@ -42,9 +43,10 @@ public class JuliLogStreamFactory implem
         final boolean embedded = is("org.apache.tomee.embedded.Container");
 
         // if embedded case enhance a bit logging if not set
+        final Options options = SystemInstance.get().getOptions();
         if ((!tomee || embedded) && 
System.getProperty("java.util.logging.manager") == null) {
             System.setProperty("java.util.logging.manager", 
OpenEJBLogManager.class.getName());
-            if (SystemInstance.get().getOptions().get(OPENEJB_LOG_COLOR_PROP, 
false) && isNotIDE()) {
+            if (options.get(OPENEJB_LOG_COLOR_PROP, false) && isNotIDE()) {
                 consoleHandlerClazz = ConsoleColorHandler.class.getName();
             } else {
                 consoleHandlerClazz = 
OpenEJBSimpleLayoutHandler.class.getName();
@@ -55,10 +57,27 @@ public class JuliLogStreamFactory implem
             } catch (ClassNotFoundException e) {
                 consoleHandlerClazz = ConsoleHandler.class.getName();
             }
+
+            if (options.get("openejb.jul.forceReload", false)) {
+                try {
+                    final Field logManager = 
LogManager.class.getDeclaredField("manager");
+                    final boolean acc = logManager.isAccessible();
+                    logManager.setAccessible(true);
+                    OpenEJBLogManager value = new OpenEJBLogManager();
+                    try {
+                        logManager.set(null, value);
+                    } finally {
+                        logManager.setAccessible(acc);
+                    }
+                    value.forceReset();
+                } catch (Exception e) {
+                    // no-op
+                }
+            }
         }
 
         try {
-            if (SystemInstance.get().getOptions().get("openjpa.Log", (String) 
null) == null) {
+            if (options.get("openjpa.Log", (String) null) == null) {
                 
JuliLogStreamFactory.class.getClassLoader().loadClass("org.apache.openjpa.lib.log.LogFactoryAdapter");
                 System.setProperty("openjpa.Log", 
"org.apache.openejb.openjpa.JULOpenJPALogFactory");
             }


Reply via email to