Author: rmannibucau Date: Sat Aug 23 10:29:40 2014 New Revision: 1620001 URL: http://svn.apache.org/r1620001 Log: TOMEE-1330 allow to scan container for wars
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1620001&r1=1620000&r2=1620001&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Sat Aug 23 10:29:40 2014 @@ -56,8 +56,10 @@ import org.apache.xbean.finder.IAnnotati import org.apache.xbean.finder.ResourceFinder; import org.apache.xbean.finder.UrlSet; import org.apache.xbean.finder.archive.ClassesArchive; +import org.apache.xbean.finder.filter.ExcludeIncludeFilter; import org.apache.xbean.finder.filter.Filter; import org.apache.xbean.finder.filter.Filters; +import org.apache.xbean.finder.filter.IncludeExcludeFilter; import java.io.BufferedInputStream; import java.io.File; @@ -109,6 +111,7 @@ public class DeploymentLoader implements private final boolean scanManagedBeans = true; private static final Collection<String> KNOWN_DESCRIPTORS = Arrays.asList("app-ctx.xml", "module.properties", "application.properties", "web.xml", "ejb-jar.xml", "openejb-jar.xml", "env-entries.properties", "beans.xml", "ra.xml", "application.xml", "application-client.xml", "persistence-fragment.xml", "persistence.xml", "validation.xml", NewLoaderLogic.EXCLUSION_FILE); private static String ALTDD = SystemInstance.get().getOptions().get(OPENEJB_ALTDD_PREFIX, (String) null); + private volatile List<URL> containerUrls = null; public AppModule load(final File jarFile) throws OpenEJBException { // verify we have a valid file @@ -919,7 +922,35 @@ public class DeploymentLoader implements // determine war class path - final List<URL> webUrls = new ArrayList<URL>(); + final List<URL> webUrls = new ArrayList<>(); + if (containerUrls == null) { + if ("true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container", "false"))) { + synchronized (this) { + if (containerUrls == null) { + try { + UrlSet urlSet = new UrlSet(ParentClassLoaderFinder.Helper.get()); + urlSet = URLs.cullSystemJars(urlSet); + urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet); + containerUrls = urlSet.getUrls(); + + final Iterator<URL> it = containerUrls.iterator(); + while (it.hasNext()) { // remove lib/ + final File file = URLs.toFile(it.next()); + // TODO: see if websocket should be added in default.exclusions + if (file.isDirectory() || file.getName().endsWith("tomcat-websocket.jar")) { + it.remove(); + } + } + } catch (final Exception e) { + logger.error(e.getMessage(), e); + } + } + } + } else { + containerUrls = Collections.emptyList(); + } + } + webUrls.addAll(containerUrls); // add these urls first to ensure we load classes from here first final String externalRepos = SystemInstance.get().getProperty("tomee." + warFile.getName().replace(".war", "") + ".externalRepositories"); Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1620001&r1=1620000&r2=1620001&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java Sat Aug 23 10:29:40 2014 @@ -213,7 +213,7 @@ public class DeploymentsResolver impleme * 2- Loading the resource is the default behaviour in case of not defining a value for any class-path pattern * This appears in step 3 of the above algorithm. */ - public static void loadFromClasspath(final FileUtils base, final List<URL> jarList, final ClassLoader classLoader) { + public static void loadFromClasspath(final FileUtils ignored, final List<URL> jarList, final ClassLoader classLoader) { final Options options = SystemInstance.get().getOptions(); final String include = options.get(CLASSPATH_INCLUDE, ".*"); final String exclude = options.get(CLASSPATH_EXCLUDE, ""); @@ -299,7 +299,7 @@ public class DeploymentsResolver impleme } final long begin = System.currentTimeMillis(); - processUrls("DeploymentsResolver1", urls, classLoader, requireDescriptors, base, jarList); + processUrls("DeploymentsResolver1", urls, classLoader, requireDescriptors, ignored, jarList); final long end = System.currentTimeMillis(); final long time = end - begin; @@ -310,7 +310,7 @@ public class DeploymentsResolver impleme if (filterSystemApps) { unchecked = unchecked.exclude(".*/openejb-[^/]+(.(jar|ear|war)(./)?|/target/classes/?)"); } - processUrls("DeploymentsResolver2", unchecked.getUrls(), classLoader, EnumSet.allOf(RequireDescriptors.class), base, jarList); + processUrls("DeploymentsResolver2", unchecked.getUrls(), classLoader, EnumSet.allOf(RequireDescriptors.class), ignored, jarList); } if (logger.isDebugEnabled()) { @@ -366,7 +366,7 @@ public class DeploymentsResolver impleme final List<URL> urls, final ClassLoader classLoader, final Set<RequireDescriptors> requireDescriptors, - final FileUtils base, + final FileUtils ignored, // don't use it, it will be removed since we already suppose it is null in several places final List<URL> jarList) { for (final URL url : urls) { Modified: tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions?rev=1620001&r1=1620000&r2=1620001&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions Sat Aug 23 10:29:40 2014 @@ -61,8 +61,7 @@ el-api eclipselink- ehcache- FastInfoset -fleece-core -fleece-mapper +fleece- fusemq-leveldb- geronimo- google-