Author: rmannibucau
Date: Thu May 22 18:58:07 2014
New Revision: 1596940

URL: http://svn.apache.org/r1596940
Log:
TOMEE-1220 jars.txt in conf/ for container enrichment

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
    
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
    
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java?rev=1596940&r1=1596939&r2=1596940&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java
 Thu May 22 18:58:07 2014
@@ -49,8 +49,6 @@ import java.util.Set;
  * Note: if a line doesn't start with '+' it is considered as an addition
  */
 public class ProvisioningClassLoaderConfigurer implements 
ClassLoaderConfigurer {
-    private static final Logger LOGGER = 
Logger.getInstance(LogCategory.OPENEJB, 
ProvisioningClassLoaderConfigurer.class);
-
     // just some default if one is not set
     private URL[] added = new URL[0];
     private Filter excluded = FalseFilter.INSTANCE;
@@ -122,7 +120,7 @@ public class ProvisioningClassLoaderConf
             }
 
         } catch (final Exception e) {
-            LOGGER.error("Can't read " + configFile, e);
+            Logger.getInstance(LogCategory.OPENEJB, 
ProvisioningClassLoaderConfigurer.class).error("Can't read " + configFile, e);
         } finally {
             IO.close(reader);
         }

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java?rev=1596940&r1=1596939&r2=1596940&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
 Thu May 22 18:58:07 2014
@@ -17,9 +17,7 @@
 
 package org.apache.openejb.util;
 
-import org.apache.log4j.ConsoleAppender;
 import org.apache.log4j.PropertyConfigurator;
-import org.apache.log4j.SimpleLayout;
 import org.apache.log4j.xml.DOMConfigurator;
 import org.apache.openejb.cdi.logging.Log4jLoggerFactory;
 import org.apache.openejb.loader.FileUtils;
@@ -101,8 +99,17 @@ public class Log4jLogStreamFactory imple
                         DOMConfigurator.configure(log4jXml.toURI().toURL());
                     } else {
 
-                        // install our logging.properties file into the conf 
dir
-                        installLoggingPropertiesFile(loggingPropertiesFile);
+                        // needs 
mvn:org.apache.logging.log4j:log4j-1.2-api:2.0-rc1,
+                        // typically container will contain:
+                        //
+                        // mvn:org.apache.logging.log4j:log4j-api:2.0-rc1
+                        // mvn:org.apache.logging.log4j:log4j-core:2.0-rc1
+                        // mvn:org.apache.logging.log4j:log4j-1.2-api:2.0-rc1
+                        final File log4j2Xml = new File(confDir, "log4j2.xml");
+                        if (!log4j2Xml.exists()) {
+                            // install our logging.properties file into the 
conf dir
+                            
installLoggingPropertiesFile(loggingPropertiesFile);
+                        } // else ignore, DOMConfigurator is just a mock doing 
nothing so don't call it and don't install defaults
                     }
                 }
             }
@@ -168,9 +175,13 @@ public class Log4jLogStreamFactory imple
     private org.apache.log4j.Logger getFallabckLogger() {
         final org.apache.log4j.Logger logger = 
org.apache.log4j.Logger.getLogger("OpenEJB.logging");
 
+        /* will break log4j support and not that needed since we'll get the 
same by default just not with a nice layout
+           which is good when something is wrong
+
         final SimpleLayout simpleLayout = new SimpleLayout();
         final ConsoleAppender newAppender = new ConsoleAppender(simpleLayout);
         logger.addAppender(newAppender);
+        */
         return logger;
     }
 

Modified: 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java?rev=1596940&r1=1596939&r2=1596940&view=diff
==============================================================================
--- 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
 (original)
+++ 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
 Thu May 22 18:58:07 2014
@@ -22,6 +22,8 @@ import org.apache.catalina.LifecycleEven
 import org.apache.catalina.LifecycleListener;
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.util.ServerInfo;
+import org.apache.openejb.classloader.ClassLoaderConfigurer;
+import org.apache.openejb.config.QuickJarsTxtParser;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.ProvisioningUtil;
 import org.apache.openejb.loader.SystemInstance;
@@ -31,7 +33,9 @@ import org.apache.tomee.loader.TomcatHel
 
 import java.io.File;
 import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.Properties;
@@ -127,24 +131,38 @@ public class ServerListener implements L
                     // no-op
                 }
 
+                final TomcatLoader loader = new TomcatLoader();
+                loader.initSystemInstance(properties);
+
                 // manage additional libraries
                 if (URLClassLoader.class.isInstance(classLoader)) {
                     final URLClassLoader ucl = 
URLClassLoader.class.cast(classLoader);
                     try {
                         final Method addUrl = 
URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
-                        for (final File f : 
ProvisioningUtil.addAdditionalLibraries()) {
-                            if (!addUrl.isAccessible()) { // set it lazily
-                                addUrl.setAccessible(true);
+                        final boolean acc = addUrl.isAccessible();
+                        try {
+                            for (final File f : 
ProvisioningUtil.addAdditionalLibraries()) {
+                                addUrl(ucl, addUrl, f.toURI().toURL());
+                            }
+
+                            final File globalJaxrsTxt = 
SystemInstance.get().getConf(QuickJarsTxtParser.FILE_NAME);
+                            final ClassLoaderConfigurer configurer = 
QuickJarsTxtParser.parse(globalJaxrsTxt);
+                            if (configurer != null) {
+                                for (final URL f : 
configurer.additionalURLs()) {
+                                    addUrl(ucl, addUrl, f);
+                                }
                             }
-                            addUrl.invoke(ucl, f.toURI().toURL());
+                        } finally {
+                            addUrl.setAccessible(acc);
                         }
                     } catch (final Exception e) {
                         LOGGER.log(Level.SEVERE, e.getMessage(), e);
                     }
+                } else {
+                    LOGGER.finer("container classloader is not an URL one so 
can't check provisining: " + classLoader);
                 }
 
-                final TomcatLoader loader = new TomcatLoader();
-                loader.init(properties);
+                loader.initialize(properties);
 
                 TomEELogConfigurer.configureLogs();
 
@@ -156,6 +174,13 @@ public class ServerListener implements L
         }
     }
 
+    private static void addUrl(final URLClassLoader ucl, final Method addUrl, 
final URL url) throws IllegalAccessException, InvocationTargetException, 
MalformedURLException {
+        if (!addUrl.isAccessible()) { // set it lazily
+            addUrl.setAccessible(true);
+        }
+        addUrl.invoke(ucl, url);
+    }
+
     private synchronized void installServerInfo() {
         if (SystemInstance.get().getOptions().get("tomee.keep-server-info", 
false)) {
             return;

Modified: 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1596940&r1=1596939&r2=1596940&view=diff
==============================================================================
--- 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
 (original)
+++ 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
 Thu May 22 18:58:07 2014
@@ -110,20 +110,22 @@ public class TomcatLoader implements Loa
     private static final List<ServerService> services = new 
ArrayList<ServerService> ();
 
     /**
-     *  {@inheritDoc}
+     * this method will be split in two to be able to use SystemInstance in 
between both invocations
+     * ie use configuration before effective boot
      */
+    @Deprecated
     public void init(Properties properties) throws Exception {
+        initSystemInstance(properties);
+        initialize(properties);
+    }
 
+    public void initSystemInstance(final Properties properties) throws 
Exception {
         // Enable System EJBs like the MEJB and DeployerEJB
         initDefaults(properties);
 
         // Loader maybe the first thing executed in a new classloader
         // so we must attempt to initialize the system instance.
         SystemInstance.init(properties);
-
-        Warmup.warmup(); // better than static (we are sure we don't hit it 
too eagerly) and doesn't cost more since uses static block
-
-        initialize(properties);
     }
 
     public void initDefaults(Properties properties) {
@@ -136,6 +138,8 @@ public class TomcatLoader implements Loa
     }
 
     public void initialize(Properties properties) throws Exception {
+        Warmup.warmup(); // better than static (we are sure we don't hit it 
too eagerly) and doesn't cost more since uses static block
+
         //Install Log
         OptionsLog.install();
 


Reply via email to