You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/01/30 21:50:17 UTC

svn commit: r1238000 - in /openejb/trunk/openejb: container/openejb-core/src/main/java/org/apache/openejb/config/ tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ tomee/tomee-loader/src/main/java/org/apache/tomee/loader/

Author: rmannibucau
Date: Mon Jan 30 20:50:16 2012
New Revision: 1238000

URL: http://svn.apache.org/viewvc?rev=1238000&view=rev
Log:
OPENEJB-1758 trying to externalize exclusions from NewLoaderLogic

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
    openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java?rev=1238000&r1=1237999&r2=1238000&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java Mon Jan 30 20:50:16 2012
@@ -32,8 +32,12 @@ import org.apache.xbean.finder.filter.Fi
 import org.apache.xbean.finder.filter.IncludeExcludeFilter;
 import org.apache.xbean.finder.filter.PatternFilter;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -50,11 +54,10 @@ import java.util.Set;
 * @version $Rev$ $Date$
 */
 public class NewLoaderLogic {
-    public static final String ADDITIONAL_EXCLUDES = System.getProperty("openejb.additional.exclude");
-    public static final String ADDITIONAL_INCLUDE = System.getProperty("openejb.additional.include");
-
     private static final Logger logger = DeploymentLoader.logger;
-    
+    private static final String EXCLUSION_FILE = "exclusions.list";
+    private static String[] exclusions = null;
+
     public static UrlSet filterArchives(Filter filter, ClassLoader classLoader, UrlSet urlSet) {
 
         for (URL url : urlSet.getUrls()) {
@@ -148,148 +151,7 @@ public class NewLoaderLogic {
     }
 
     public static UrlSet applyBuiltinExcludes(UrlSet urlSet) throws MalformedURLException {
-        final List<String> excludes = Arrays.asList(
-                "ApacheJMeter",
-                "XmlSchema-",
-                "aether-",
-                "activeio-",
-                "activemq-",
-                "antlr-",
-                "aopalliance-",
-                "avalon-framework-",
-                "axis-",
-                "axis2-",
-                "bcprov-",
-                "bval-core",
-                "bval-jsr",
-                "catalina-",
-                "cglib-",
-                "commons-beanutils",
-                "commons-cli-",
-                "commons-codec-",
-                "commons-collections-",
-                "commons-digester-",
-                "commons-dbcp",
-                "commons-dbcp-all-1.3-",
-                "commons-discovery-",
-                "commons-httpclient-",
-                "commons-io-",
-                "commons-lang-",
-                "commons-lang3-",
-                "commons-logging-",
-                "commons-logging-api-",
-                "commons-net-",
-                "commons-pool-",
-                "cssparser-",
-                "cxf-",
-                "deploy.jar",
-                "derby-",
-                "dom4j-",
-                "geronimo-",
-                "gragent.jar",
-                "guice-",
-                "hibernate-",
-                "howl-",
-                "hsqldb-",
-                "htmlunit-",
-                "icu4j-",
-                "idb-",
-                "idea_rt.jar",
-                "jasypt-",
-                "javaee-",
-                "javaee-api",
-                "javassist-",
-                "javaws.jar",
-                "javax.",
-                "jaxb-",
-                "jaxp-",
-                "jboss-",
-                "jbossall-",
-                "jbosscx-",
-                "jbossjts-",
-                "jbosssx-",
-                "jcommander-",
-                "jetty-",
-                "jettison-",
-                "joda-time-",
-                "jmdns-",
-                "jsp-api-",
-                "jsr299-",
-                "jsr311-",
-                "juli-",
-                "junit-",
-                "kahadb-",
-                "log4j-",
-                "logkit-",
-                "maven-",
-                "mbean-annotation-api-",
-                "myfaces-api",
-                "myfaces-impl",
-                "neethi-",
-                "nekohtml-",
-                "openejb-api",
-                "openejb-cxf-bundle",
-                "openejb-javaagent",
-                "openejb-jee",
-                "openejb-loader",
-                "openjpa-",
-                "opensaml-",
-                "openwebbeans-",
-                "openws-",
-                "ops4j-",
-                "org.eclipse.",
-                "org.junit.",
-                "org.osgi.core-",
-                "pax-",
-                "plexus-",
-                "quartz-",
-                "rmock-",
-                "saaj-",
-                "sac-",
-                "scannotation-",
-                "serializer-",
-                "serp-",
-                "servlet-api-",
-                "slf4j-",
-                "spring-",
-                "stax-api-",
-                "swizzle-",
-                "testng-",
-                "wagon-",
-                "webbeans-ee",
-                "webbeans-ejb",
-                "webbeans-impl",
-                "webbeans-spi",
-                "wsdl4j-",
-                "wss4j-",
-                "wstx-asl-",
-                "xalan-",
-                "xbean-",
-                "xercesImpl-",
-                "xml-apis-",
-                "xml-resolver-",
-                "xmlrpc-",
-                "xmlsec-",
-                "xmlunit-");
-        if (ADDITIONAL_EXCLUDES != null) {
-            for (String exclude : ADDITIONAL_EXCLUDES.split(",")) {
-                excludes.add(exclude.trim());
-            }
-        }
-        if (ADDITIONAL_INCLUDE != null) { // include = not excluded
-            for (String rawInclude : ADDITIONAL_INCLUDE.split(",")) {
-                final String include = rawInclude.trim();
-                final Iterator<String> excluded = excludes.iterator();
-                while (excluded.hasNext()) {
-                    if (excluded.next().startsWith(include)) {
-                        excluded.remove();
-                    }
-                }
-            }
-        }
-
-        final Filter filter = Filters.prefixes(excludes.toArray(new String[excludes.size()]));
-        
+        final Filter filter = Filters.prefixes(getExclusions());
 
 //        filter = Filters.optimize(filter, new PatternFilter(".*/openejb-.*"));
         List<URL> urls = urlSet.getUrls();
@@ -308,6 +170,49 @@ public class NewLoaderLogic {
         return new UrlSet(urls);
     }
 
+    public static void setExclusions(final String[] exclusionArray) {
+        exclusions = exclusionArray;
+    }
+
+    public static String[] getExclusions() {
+        if (exclusions != null) {
+            return exclusions;
+        }
+
+        try {
+            final File conf = SystemInstance.get().getBase().getDirectory("conf");
+            final File exclusionsFile = new File(conf, EXCLUSION_FILE);
+            if (exclusionsFile.exists()) {
+                exclusions = readInputStreamList(new FileInputStream(exclusionsFile));
+            }
+        } catch (IOException e) {
+            // ignored
+        }
+
+        if (exclusions == null) {
+            exclusions = readInputStreamList(NewLoaderLogic.class.getResourceAsStream("/default.exclusions"));
+        }
+
+        return exclusions;
+    }
+
+    private static String[] readInputStreamList(InputStream is) {
+        final List<String> list = new ArrayList<String>();
+        final BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+        String line;
+        try {
+            while ((line = reader.readLine()) != null) {
+                final String value = line.trim();
+                if (!value.isEmpty()) {
+                    list.add(value);
+                }
+            }
+        } catch (IOException e) {
+            // ignored
+        }
+        return list.toArray(new String[list.size()]);
+    }
+
     private static File filter(File location) {
         List<String> invalid = new ArrayList<String>();
         invalid.add("classes");

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1238000&r1=1237999&r2=1238000&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java Mon Jan 30 20:50:16 2012
@@ -29,6 +29,7 @@ import org.apache.catalina.startup.Boots
 import org.apache.catalina.startup.Catalina;
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.assembler.classic.WebAppBuilder;
+import org.apache.openejb.config.NewLoaderLogic;
 import org.apache.openejb.core.ServerFederation;
 import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.loader.Loader;
@@ -52,8 +53,11 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
+import java.util.Set;
 
 /**
  * <h1>Prerequisites</h1>
@@ -151,9 +155,10 @@ public class TomcatLoader implements Loa
         }
 
         FileInputStream fin = null;
+        File conf = null;
         // Read in and apply the conf/system.properties
         try {
-            File conf = SystemInstance.get().getBase().getDirectory("conf");
+            conf = SystemInstance.get().getBase().getDirectory("conf");
 
             //Look for custom system properties
             File file = new File(conf, "system.properties");
@@ -183,6 +188,21 @@ public class TomcatLoader implements Loa
         // Install tomcat thread context listener
         ThreadContext.addThreadContextListener(new TomcatThreadContextListener());
 
+        // set ignorable libraries from a tomee property instead of using the standard openejb one
+        // don't ignore standard openejb exclusions file
+        final Set<String> exclusions = new HashSet<String>(Arrays.asList(NewLoaderLogic.getExclusions()));
+        final File catalinaProperties = new File(conf, "catalina.properties");
+        if (catalinaProperties.exists()) {
+            final Properties catalinaProps = new Properties();
+            catalinaProps.load(new FileInputStream(catalinaProperties));
+            final String jarToSkipProp = catalinaProps.getProperty("tomcat.util.scan.DefaultJarScanner.jarsToSkip");
+            if (jarToSkipProp != null) {
+                for (String s : jarToSkipProp.split(",")) {
+                    exclusions.add(s.trim());
+                }
+            }
+        }
+        NewLoaderLogic.setExclusions(exclusions.toArray(new String[exclusions.size()]));
 
         // Install tomcat war builder
         TomcatWebAppBuilder tomcatWebAppBuilder = (TomcatWebAppBuilder) SystemInstance.get().getComponent(WebAppBuilder.class);

Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java?rev=1238000&r1=1237999&r2=1238000&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java Mon Jan 30 20:50:16 2012
@@ -27,7 +27,7 @@ import java.util.Set;
 
 public class TomEEJarScanner extends StandardJarScanner {
 
-    public void scan(ServletContext context, ClassLoader classLoader, JarScannerCallback callback, Set<String> jarsToIgnore) {
+    public void sNcan(ServletContext context, ClassLoader classLoader, JarScannerCallback callback, Set<String> jarsToIgnore) {
         if ("FragmentJarScannerCallback".equals(callback.getClass().getSimpleName())) {
             EmbeddedJarScanner embeddedJarScanner = new EmbeddedJarScanner();
             embeddedJarScanner.scan(context, classLoader, callback, jarsToIgnore);