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);