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 2014/07/25 00:40:37 UTC

svn commit: r1613316 [1/3] - in /tomee/tomee/trunk: ./ container/openejb-core/src/main/java/org/apache/openejb/assembler/ container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb...

Author: rmannibucau
Date: Thu Jul 24 22:40:36 2014
New Revision: 1613316

URL: http://svn.apache.org/r1613316
Log:
TOMEE-1278 tomcat 8.0.x

Added:
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
      - copied, changed from r1612877, tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
      - copied, changed from r1612877, tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/scan/
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/scan/EmptyScanner.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/
      - copied from r1612877, tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/JULLogger.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/LoggerFactory.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/NoopLogger.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/services/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/services/org.apache.juli.logging.Log
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java
      - copied, changed from r1612877, tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLog.java
      - copied, changed from r1612877, tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLog.java
Removed:
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/BackportUtil.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/
    tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/common/TomcatVersion.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/juli/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/TomEELogConfigurer.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/Log4jLog.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/Log4jLogFactory.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/Slf4jLog.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/Slf4jLogFactory.java
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java
    tomee/tomee/trunk/tomee/tomee-loader/src/main/resources/
Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
    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/FinderFactory.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
    tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions
    tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml
    tomee/tomee/trunk/pom.xml
    tomee/tomee/trunk/tck/cdi-tomee/pom.xml
    tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml
    tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
    tomee/tomee/trunk/tomee/pom.xml
    tomee/tomee/trunk/tomee/tomee-catalina/pom.xml
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.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/SimpleTomEETcpCluster.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatThreadContextListener.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/DeployMessage.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/UndeployMessage.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LazyRealm.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/remote/TomEERemoteWebapp.java
    tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
    tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java
    tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
    tomee/tomee/trunk/tomee/tomee-jaxrs/src/test/java/org/apache/tomee/jaxrs/ReloadingLoaderTest.java
    tomee/tomee/trunk/tomee/tomee-juli/pom.xml
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/AsyncConsoleHandler.java
    tomee/tomee/trunk/tomee/tomee-loader/pom.xml
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHelper.java
    tomee/tomee/trunk/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEMyFacesContainerInitializer.java
    tomee/tomee/trunk/tomee/tomee-webaccess/pom.xml
    tomee/tomee/trunk/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java
    tomee/tomee/trunk/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java Thu Jul 24 22:40:36 2014
@@ -36,6 +36,7 @@ import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.ProvisioningUtil;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 
@@ -241,6 +242,7 @@ public class DeployerEjb implements Depl
             assembler.createApplication(appInfo);
 
             if (SAVE_DEPLOYMENTS || "true".equalsIgnoreCase(properties.getProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, "false"))) {
+                appInfo.properties.setProperty("save-deployment","true");
                 saveDeployment(file, true);
             }
 
@@ -360,24 +362,24 @@ public class DeployerEjb implements Depl
 
     @Override
     public void undeploy(final String moduleId) throws UndeployException, NoSuchApplicationException {
-        try {
-            assembler.destroyApplication(moduleId);
-        } catch (final NoSuchApplicationException nsae) {
-            try {
-                assembler.destroyApplication(realLocation(moduleId));
-            } catch (final Exception e) {
-                try {
-                    assembler.destroyApplication(new File(moduleId).getAbsolutePath());
-                } catch (final Exception e2) {
-                    try {
-                        assembler.destroyApplication(new File(realLocation(moduleId)).getAbsolutePath());
-                    } catch (final Exception e3) {
-                        throw nsae;
-                    }
+        AppInfo appInfo = assembler.getAppInfo(moduleId);
+        if (appInfo == null) {
+            appInfo = assembler.getAppInfo(realLocation(moduleId));
+            if (appInfo == null) {
+                appInfo = assembler.getAppInfo(new File(moduleId).getAbsolutePath());
+                if (appInfo == null) {
+                    appInfo = assembler.getAppInfo(new File(realLocation(moduleId)).getAbsolutePath());
                 }
             }
         }
-        saveDeployment(new File(moduleId), false);
+        if (appInfo != null) {
+            assembler.destroyApplication(appInfo);
+            if (appInfo.properties.containsKey("save-deployment")) {
+                saveDeployment(new File(moduleId), false);
+            }
+        } else {
+            throw new NoSuchApplicationException(moduleId);
+        }
     }
 
     private String contextRoot(final Properties properties, final String jarPath) {

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Thu Jul 24 22:40:36 2014
@@ -534,6 +534,10 @@ public class Assembler extends Assembler
         }
     }
 
+    public AppInfo getAppInfo(final String path) {
+        return deployedApplications.get(ProvisioningUtil.realLocation(path));
+    }
+
     public boolean isDeployed(final String path) {
         return deployedApplications.containsKey(ProvisioningUtil.realLocation(path));
     }

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Thu Jul 24 22:40:36 2014
@@ -426,7 +426,7 @@ public class AnnotationDeployer implemen
         public AppModule deploy(AppModule appModule) throws OpenEJBException {
             if (!appModule.isWebapp() && !appModule.getWebModules().isEmpty()) { // need to scan for jsf stuff at least
                 try {
-                    appModule.setEarLibFinder(FinderFactory.createFinder(appModule));
+                    appModule.setEarLibFinder(FinderFactory.createFinder(appModule, true));
                 } catch (final Exception e) {
                     logger.error("Can't create a finder for ear libs", e);
                 }
@@ -498,7 +498,7 @@ public class AnnotationDeployer implemen
 
             if (finder == null) {
                 try {
-                    finder = FinderFactory.createFinder(clientModule);
+                    finder = FinderFactory.createFinder(clientModule, false);
                 } catch (final MalformedURLException e) {
                     startupLogger.warning("startup.scrapeFailedForClientModule.url", clientModule.getJarLocation());
                     return clientModule;
@@ -552,7 +552,7 @@ public class AnnotationDeployer implemen
             IAnnotationFinder finder = connectorModule.getFinder();
             if (finder == null) {
                 try {
-                    finder = FinderFactory.createFinder(connectorModule);
+                    finder = FinderFactory.createFinder(connectorModule, false);
                     connectorModule.setFinder(finder);
                 } catch (final Exception e) {
                     // TODO: some sort of error
@@ -1059,7 +1059,7 @@ public class AnnotationDeployer implemen
 
             try {
                 if (webModule.getFinder() == null) {
-                    webModule.setFinder(FinderFactory.createFinder(webModule));
+                    webModule.setFinder(FinderFactory.createFinder(webModule, true));
                 }
             } catch (final Exception e) {
                 startupLogger.warning("Unable to scrape for @WebService or @WebServiceProvider annotations. AnnotationFinder failed.", e);
@@ -1277,7 +1277,7 @@ public class AnnotationDeployer implemen
 
             try {
                 if (ejbModule.getFinder() == null) {
-                    ejbModule.setFinder(FinderFactory.createFinder(ejbModule));
+                    ejbModule.setFinder(FinderFactory.createFinder(ejbModule, true));
                 }
             } catch (final MalformedURLException e) {
                 startupLogger.warning("startup.scrapeFailedForModule", ejbModule.getJarLocation());

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Thu Jul 24 22:40:36 2014
@@ -93,10 +93,12 @@ import org.apache.openejb.util.URISuppor
 import org.apache.openejb.util.URLs;
 import org.apache.openejb.util.classloader.URLClassLoaderFirst;
 import org.apache.openejb.util.proxy.QueryProxy;
+import org.apache.xbean.finder.IAnnotationFinder;
 import org.apache.xbean.finder.MetaAnnotatedClass;
 import org.apache.xbean.finder.ResourceFinder;
 
 import javax.ejb.embeddable.EJBContainer;
+import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -917,55 +919,78 @@ public class ConfigurationFactory implem
     }
 
     public AppInfo configureApplication(final AppModule appModule) throws OpenEJBException {
-        final Collection<Class<?>> extensions = new HashSet<Class<?>>();
-        final Collection<String> notLoaded = new HashSet<String>();
+        try {
+            final Collection<Class<?>> extensions = new HashSet<Class<?>>();
+            final Collection<String> notLoaded = new HashSet<String>();
 
-        final List<URL> libs = appModule.getAdditionalLibraries();
-        if (libs != null && libs.size() > 0) {
-            final ResourceFinder finder = new ResourceFinder("META-INF", libs.toArray(new URL[libs.size()]));
-            extensions.addAll(Extensions.findExtensions(finder));
-            notLoaded.addAll(finder.getResourcesNotLoaded());
-        }
-        for (final EjbModule ejb : appModule.getEjbModules()) {
-            try {
-                final URI uri = ejb.getModuleUri();
-                if (uri.isAbsolute()) {
-                    final URL url = uri.toURL();
-                    if (libs != null && !libs.contains(url)) {
-                        final ResourceFinder finder = new ResourceFinder("META-INF", url);
-                        extensions.addAll(Extensions.findExtensions(finder));
-                        notLoaded.addAll(finder.getResourcesNotLoaded());
+            final List<URL> libs = appModule.getAdditionalLibraries();
+            if (libs != null && libs.size() > 0) {
+                final ResourceFinder finder = new ResourceFinder("META-INF", libs.toArray(new URL[libs.size()]));
+                extensions.addAll(Extensions.findExtensions(finder));
+                notLoaded.addAll(finder.getResourcesNotLoaded());
+            }
+            for (final EjbModule ejb : appModule.getEjbModules()) {
+                try {
+                    final URI uri = ejb.getModuleUri();
+                    if (uri.isAbsolute()) {
+                        final URL url = uri.toURL();
+                        if (libs != null && !libs.contains(url)) {
+                            final ResourceFinder finder = new ResourceFinder("META-INF", url);
+                            extensions.addAll(Extensions.findExtensions(finder));
+                            notLoaded.addAll(finder.getResourcesNotLoaded());
+                        }
                     }
+                } catch (final IllegalArgumentException iae) {
+                    logger.debug("can't look for server event listener for module " + ejb.getModuleUri(), iae);
+                } catch (final MalformedURLException mue) {
+                    logger.debug("can't look for server event listener for module " + ejb.getModuleUri(), mue);
+                } catch (final Exception e) {
+                    logger.error("can't look for server event listener for module " + ejb.getJarLocation());
                 }
-            } catch (final IllegalArgumentException iae) {
-                logger.debug("can't look for server event listener for module " + ejb.getModuleUri(), iae);
-            } catch (final MalformedURLException mue) {
-                logger.debug("can't look for server event listener for module " + ejb.getModuleUri(), mue);
-            } catch (final Exception e) {
-                logger.error("can't look for server event listener for module " + ejb.getJarLocation());
             }
-        }
-        for (final WebModule web : appModule.getWebModules()) {
-            final List<URL> webLibs = web.getScannableUrls();
-            if (webLibs != null && webLibs.size() > 0) {
-                final ResourceFinder finder = new ResourceFinder("META-INF", webLibs.toArray(new URL[webLibs.size()]));
-                extensions.addAll(Extensions.findExtensions(finder));
-                notLoaded.addAll(finder.getResourcesNotLoaded());
+            for (final WebModule web : appModule.getWebModules()) {
+                final List<URL> webLibs = web.getScannableUrls();
+                if (webLibs != null && webLibs.size() > 0) {
+                    final ResourceFinder finder = new ResourceFinder("META-INF", webLibs.toArray(new URL[webLibs.size()]));
+                    extensions.addAll(Extensions.findExtensions(finder));
+                    notLoaded.addAll(finder.getResourcesNotLoaded());
+                }
             }
-        }
 
-        // add it as early as possible, the ones needing the app classloader will be added later
-        Extensions.addExtensions(extensions);
+            // add it as early as possible, the ones needing the app classloader will be added later
+            Extensions.addExtensions(extensions);
 
-        final String location = appModule.getJarLocation();
-        logger.info("config.configApp", null != location ? location : appModule.getModuleId());
-        deployer.deploy(appModule);
-        final AppInfoBuilder appInfoBuilder = new AppInfoBuilder(this);
+            final String location = appModule.getJarLocation();
+            logger.info("config.configApp", null != location ? location : appModule.getModuleId());
+            deployer.deploy(appModule);
+            final AppInfoBuilder appInfoBuilder = new AppInfoBuilder(this);
 
-        final AppInfo info = appInfoBuilder.build(appModule);
-        info.eventClassesNeedingAppClassloader.addAll(notLoaded);
+            final AppInfo info = appInfoBuilder.build(appModule);
+            info.eventClassesNeedingAppClassloader.addAll(notLoaded);
 
-        return info;
+            return info;
+        } finally {
+            destroy(appModule.getEarLibFinder());
+            for (final EjbModule ejb : appModule.getEjbModules()) {
+                destroy(ejb.getFinder());
+            }
+            for (final WebModule web : appModule.getWebModules()) {
+                destroy(web.getFinder());
+            }
+        }
+    }
+
+    private static void destroy(final IAnnotationFinder finder) {
+        if (finder == null) {
+            return;
+        }
+        if (AutoCloseable.class.isInstance(finder)) {
+            try {
+                AutoCloseable.class.cast(finder).close();
+            } catch (final Exception e) {
+                // no-op
+            }
+        }
     }
 
     private static class DefaultService {

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=1613316&r1=1613315&r2=1613316&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 Thu Jul 24 22:40:36 2014
@@ -831,7 +831,7 @@ public class DeploymentLoader implements
                     webModule.setFinder(finder);
                     webEjbModule.setFinder(finder);
                 } else {
-                    final IAnnotationFinder finder = FinderFactory.createFinder(webModule);
+                    final IAnnotationFinder finder = FinderFactory.createFinder(webModule, true);
                     webModule.setFinder(finder);
                     webEjbModule.setFinder(finder);
                 }
@@ -1119,7 +1119,7 @@ public class DeploymentLoader implements
 
         IAnnotationFinder finder;
         try {
-            finder = FinderFactory.createFinder(appModule);
+            finder = FinderFactory.createFinder(appModule, true);
         } catch (final Exception e) {
             finder = new FinderFactory.ModuleLimitedFinder(new org.apache.xbean.finder.AnnotationFinder(new WebappAggregatedArchive(appModule.getClassLoader(), appModule.getAltDDs(), xmls)));
         }

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java Thu Jul 24 22:40:36 2014
@@ -54,27 +54,27 @@ public class FinderFactory {
         return factory != null ? factory : FinderFactory.factory;
     }
 
-    public static IAnnotationFinder createFinder(final DeploymentModule module) throws Exception {
-        return get().create(module);
+    public static IAnnotationFinder createFinder(final DeploymentModule module, final boolean allowAsync) throws Exception {
+        return get().create(module, allowAsync);
     }
 
-    public static AnnotationFinder getFinder(final ClassLoader classLoader, final URL url) {
-        return newFinder(ClasspathArchive.archive(classLoader, url));
+    public static AnnotationFinder getFinder(final ClassLoader classLoader, final URL url, final boolean allowAsync) {
+        return newFinder(ClasspathArchive.archive(classLoader, url), allowAsync);
     }
 
-    public IAnnotationFinder create(final DeploymentModule module) throws Exception {
+    public IAnnotationFinder create(final DeploymentModule module, final boolean allowAsync) throws Exception {
         final AnnotationFinder finder;
         if (module instanceof WebModule) {
             final WebModule webModule = (WebModule) module;
-            final AnnotationFinder annotationFinder = newFinder(new WebappAggregatedArchive(webModule, webModule.getScannableUrls()));
+            final AnnotationFinder annotationFinder = newFinder(new WebappAggregatedArchive(webModule, webModule.getScannableUrls()), allowAsync);
             enableFinderOptions(annotationFinder);
             finder = annotationFinder;
         } else if (module instanceof ConnectorModule) {
             final ConnectorModule connectorModule = (ConnectorModule) module;
-            finder = newFinder(new ConfigurableClasspathArchive(connectorModule, connectorModule.getLibraries())).link();
+            finder = newFinder(new ConfigurableClasspathArchive(connectorModule, connectorModule.getLibraries()), allowAsync).link();
         } else if (module instanceof AppModule) {
             final Collection<URL> urls = NewLoaderLogic.applyBuiltinExcludes(new UrlSet(AppModule.class.cast(module).getAdditionalLibraries())).getUrls();
-            finder = newFinder(new WebappAggregatedArchive(module.getClassLoader(), module.getAltDDs(), urls));
+            finder = newFinder(new WebappAggregatedArchive(module.getClassLoader(), module.getAltDDs(), urls), allowAsync);
         } else if (module.getJarLocation() != null) {
             final String location = module.getJarLocation();
             final File file = new File(location);
@@ -93,9 +93,9 @@ public class FinderFactory {
 
             if (module instanceof Module) {
                 final DebugArchive archive = new DebugArchive(new ConfigurableClasspathArchive((Module) module, url));
-                finder = newFinder(archive);
+                finder = newFinder(archive, allowAsync);
             } else {
-                finder = newFinder(new DebugArchive(new ConfigurableClasspathArchive(module.getClassLoader(), url)));
+                finder = newFinder(new DebugArchive(new ConfigurableClasspathArchive(module.getClassLoader(), url)), allowAsync);
             }
             if ("true".equals(SystemInstance.get().getProperty(FORCE_LINK, module.getProperties().getProperty(FORCE_LINK, "false")))) {
                 finder.link();
@@ -110,8 +110,8 @@ public class FinderFactory {
         return new ModuleLimitedFinder(finder);
     }
 
-    private static AnnotationFinder newFinder(final Archive archive) {
-        if ("true".equals(SystemInstance.get().getProperty(ASYNC_SCAN, "true"))) {
+    private static AnnotationFinder newFinder(final Archive archive, final boolean allowAsync) {
+        if (allowAsync && "true".equals(SystemInstance.get().getProperty(ASYNC_SCAN, "true"))) {
             return new AsynchronousInheritanceAnnotationFinder(archive);
         }
         return new AnnotationFinder(archive);
@@ -155,21 +155,13 @@ public class FinderFactory {
     }
 
     private static void enableSubclassing(final AnnotationFinder annotationFinder) {
-        if (enableFindSubclasses()) {
-            // for @HandleTypes we need interface impl, impl of abstract classes too
-            annotationFinder.enableFindSubclasses();
-            annotationFinder.enableFindImplementations();
-        }
-    }
-
-    private static boolean enableFindSubclasses() {
-        return SystemInstance.get().getOptions().get(FORCE_LINK, false)
-            || !SystemInstance.get().getOptions().get(SKIP_LINK, false)
-            && (isTomEE() || isJaxRsInstalled() && SystemInstance.get().getOptions().get(TOMEE_JAXRS_DEPLOY_UNDECLARED_PROP, false));
+        // for @HandleTypes we need interface impl, impl of abstract classes too
+        annotationFinder.enableFindSubclasses();
+        annotationFinder.enableFindImplementations();
     }
 
     public static boolean isTomEE() {
-        try { // since Tomcat 7.0.47
+        try {
             FinderFactory.class.getClassLoader().loadClass("javax.websocket.Endpoint");
             return true;
         } catch (final Throwable e) {
@@ -186,7 +178,7 @@ public class FinderFactory {
         }
     }
 
-    public static class ModuleLimitedFinder implements IAnnotationFinder {
+    public static class ModuleLimitedFinder implements IAnnotationFinder, AutoCloseable {
         private final IAnnotationFinder delegate;
 
         public ModuleLimitedFinder(final IAnnotationFinder delegate) {
@@ -314,6 +306,13 @@ public class FinderFactory {
             return delegate;
         }
 
+        @Override
+        public void close() {
+            if (AsynchronousInheritanceAnnotationFinder.class.isInstance(delegate)) {
+                AsynchronousInheritanceAnnotationFinder.class.cast(delegate).destroy();
+            }
+        }
+
         private abstract static class Predicate<T> {
             protected final List<String> accepted;
 

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java Thu Jul 24 22:40:36 2014
@@ -186,12 +186,8 @@ public class NewLoaderLogic {
 
             final String name = filter(file).getName();
 
-            if (includeFilter == null || !includeFilter.accept(name)) {
-                if (filter != null && filter.accept(name)) {
-                    return true;
-                } else if (excludeFilter != null && excludeFilter.accept(name)) {
-                    return true;
-                }
+            if (skip(includeFilter, excludeFilter, name)) {
+                return true;
             }
         } catch (final IllegalArgumentException iae) {
             // no-op
@@ -200,6 +196,25 @@ public class NewLoaderLogic {
         return false;
     }
 
+    private static boolean skip(final Filter includeFilter, final Filter excludeFilter, final String name) {
+        if (includeFilter == null || !includeFilter.accept(name)) {
+            if (filter != null && filter.accept(name)) {
+                return true;
+            } else if (excludeFilter != null && excludeFilter.accept(name)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static boolean skip(final String name) {
+        getExclusions();
+        if (filter != null && filter.accept(name)) {
+            return true;
+        }
+        return false;
+    }
+
     public static UrlSet applyBuiltinExcludes(final UrlSet urlSet, final Filter includeFilter, final Filter excludeFilter) throws MalformedURLException {
         getExclusions(); // force init
 

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java Thu Jul 24 22:40:36 2014
@@ -204,6 +204,9 @@ public class JuliLogStream implements Lo
                 if (i < elements.length) {
                     this.sourceClassName = elements[i].getClassName();
                     this.sourceMethodName = elements[i].getMethodName();
+                } else if (current != null && current.endsWith("LoggerThread")) {
+                    this.sourceClassName = ASYNC_LOG_NAME;
+                    this.sourceMethodName = "run";
                 }
 
                 this.sourceInited = true;

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java Thu Jul 24 22:40:36 2014
@@ -273,7 +273,9 @@ public class Logger {
     public Logger(final LogCategory category, final LogStream logStream, final String baseName) {
         this.category = category;
         this.baseName = baseName;
-        this.logStream = ("true".equals(SystemInstance.get().getProperty("openejb.log.async", "true")) ? new LogStreamAsync(logStream) : logStream);
+        this.logStream = // tomcat is already async so abuse of it
+            ("true".equals(SystemInstance.get().getProperty("openejb.log.async", "true")) && System.getProperty("catalina.home") == null) ?
+                new LogStreamAsync(logStream) : logStream;
     }
 
     public static Logger getInstance(final LogCategory category, final Class clazz) {

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=1613316&r1=1613315&r2=1613316&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 Thu Jul 24 22:40:36 2014
@@ -56,8 +56,11 @@ derbyclient-
 derbynet-
 dom4j
 ecj-
+el-api
 eclipselink-
 FastInfoset
+fleece-core
+fleece-mapper
 fusemq-leveldb-
 geronimo-
 google-
@@ -207,10 +210,12 @@ tomcat-el
 tomcat-i18n
 tomcat-jasper
 tomcat-jdbc
+tomcat-jni
 tomcat-jsp
 tomcat-juli
 tomcat-tribes
 tomcat-servlet
+tomcat-spdy
 tomcat-util
 tomee-
 tools.jar
@@ -221,6 +226,7 @@ webbeans-ee
 webbeans-ejb
 webbeans-impl
 webbeans-spi
+websocket-api
 woodstox-core-asl-
 ws-commons-util-
 wsdl4j-

Modified: tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml (original)
+++ tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml Thu Jul 24 22:40:36 2014
@@ -100,12 +100,6 @@
       <id>apache-m2</id>
       <name>Apache M2 Repository</name>
       <url>https://repository.apache.org/content/repositories/releases/</url>
-      <releases>
-        <enabled>true</enabled>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
     </repository>
   </repositories>
 

Modified: tomee/tomee/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/pom.xml (original)
+++ tomee/tomee/trunk/pom.xml Thu Jul 24 22:40:36 2014
@@ -106,7 +106,7 @@
     <maven-bundle-plugin.version>2.3.7</maven-bundle-plugin.version>
 
     <!-- This is used by a manifest classpath entry -->
-    <xbeanVersion>3.18</xbeanVersion>
+    <xbeanVersion>3.19-SNAPSHOT</xbeanVersion>
 
     <!-- OSGi bundles properties -->
     <openejb.bundle.activator/>
@@ -125,7 +125,7 @@
     <!-- to change easily the javaee api version -->
     <javaee-api.version>7.0-SNAPSHOT</javaee-api.version>
 
-    <tomcat.version>7.0.54</tomcat.version>
+    <tomcat.version>8.0.9</tomcat.version>
 
     <cxf.version>3.0.2-SNAPSHOT</cxf.version>
     <!--2.6.4 requires wss4j 1.6.8-->

Modified: tomee/tomee/trunk/tck/cdi-tomee/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-tomee/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/cdi-tomee/pom.xml (original)
+++ tomee/tomee/trunk/tck/cdi-tomee/pom.xml Thu Jul 24 22:40:36 2014
@@ -31,8 +31,7 @@
     <openejb.home>${project.build.directory}${file.separator}apache-tomee-${tomee.classifier}-${tomee.version}
     </openejb.home>
     <openejb.deployer.jndiname>openejb/DeployerBusinessRemote</openejb.deployer.jndiname>
-    <org.jboss.testharness.spi.Containers>org.apache.openejb.tck.impl.ContainersImplTomEE
-    </org.jboss.testharness.spi.Containers>
+    <org.jboss.testharness.spi.Containers>org.apache.openejb.tck.impl.ContainersImplTomEE</org.jboss.testharness.spi.Containers>
     <suiteXmlFile>src/test/resources/passing.xml</suiteXmlFile>
   </properties>
 
@@ -109,6 +108,12 @@
       <artifactId>testng</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency> <!-- useless but so cool for debug purposes -->
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-catalina</artifactId>
+      <version>${tomcat.version}</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <resources>
@@ -243,8 +248,7 @@
             <org.jboss.testharness.standalone>false</org.jboss.testharness.standalone>
             <org.jboss.testharness.runIntegrationTests>true</org.jboss.testharness.runIntegrationTests>
             <org.jboss.testharness.container.forceRestart>true</org.jboss.testharness.container.forceRestart>
-            <org.jboss.testharness.libraryDirectory>${project.build.directory}/dependency/lib
-            </org.jboss.testharness.libraryDirectory>
+            <org.jboss.testharness.libraryDirectory>${project.build.directory}/dependency/lib</org.jboss.testharness.libraryDirectory>
             <org.jboss.testharness.host>127.0.0.1:${tomee.http.port}</org.jboss.testharness.host>
             <!--<org.jboss.testharness.outputDirectory>target</org.jboss.testharness.outputDirectory>-->
             <deleteArtifacts>true</deleteArtifacts>
@@ -287,8 +291,7 @@
     <profile>
       <id>webapp-deployer</id>
       <properties>
-        <org.jboss.testharness.spi.Containers>org.apache.openejb.tck.impl.FullRestartContainer
-        </org.jboss.testharness.spi.Containers>
+        <org.jboss.testharness.spi.Containers>org.apache.openejb.tck.impl.FullRestartContainer</org.jboss.testharness.spi.Containers>
         <!--suiteXmlFile>src/test/resources/webapps-passing.xml</suiteXmlFile-->
       </properties>
     </profile>

Modified: tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml (original)
+++ tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml Thu Jul 24 22:40:36 2014
@@ -19,24 +19,12 @@
 
 <suite name="CDI TCK" verbose="0">
   <test name="CDI TCK">
-    <!--<packages>-->
-        <!--<package name="org.jboss.jsr299.tck.tests.*"/>-->
-        <!--<package name="org.jboss.jsr299.tck.interceptors.tests.*"/>-->
-    <!--</packages>-->
     <classes>
-      <!--
-  NewEnterpriseBeanTest>AbstractTest.run:244->testNewBeanHasNoObservers:95 null
-  EnvInjectionTest>AbstractTest.run:244->testProduceEnvProxy:69 » NullPointer
-
--->
-      <class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.env.EnvInjectionTest"/>
-      <!--
-      <class name="org.jboss.jsr299.tck.tests.implementation.enterprise.newBean.NewEnterpriseBeanTest">
-        <methods>
-          <include name="testNewBeanHasNoObservers"/>
-        </methods>
-      </class>
-      -->
+      <class name="org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest"/>
+      <class name="org.jboss.jsr299.tck.tests.context.conversation.LongRunningConversationPropagatedByFacesContextTest"/>
+      <class name="org.jboss.jsr299.tck.tests.lookup.manager.ManagerTest"/>
+      <class name="org.jboss.jsr299.tck.tests.lookup.manager.jndi.ManagerTest"/>
+      <class name="org.jboss.jsr299.tck.tests.context.conversation.ManualCidPropagationTest"/>
     </classes>
   </test>
 </suite>

Modified: tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java (original)
+++ tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java Thu Jul 24 22:40:36 2014
@@ -65,7 +65,7 @@ public class ContainersImplTomEE extends
 
     public ContainersImplTomEE() {
         System.out.println("ContainersImpl=" + ContainersImplTomEE.class.getName());
-        System.out.println("Initialized ContainersImplTomEE " + (++count));
+        System.out.println("Initialized ContainersImplTomEE " + (++count) + ", wait port = " + port);
         server = new RemoteServer();
         server.setPortStartup(this.port);
     }
@@ -154,6 +154,7 @@ public class ContainersImplTomEE extends
     public void setup() throws IOException {
         System.out.println("Setup called");
         server.start(Arrays.asList("-Dopenejb.classloader.forced-load=org.apache.openejb.tck"), "start", true);
+        System.out.println("Started");
     }
 
     @Override

Modified: tomee/tomee/trunk/tomee/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/pom.xml (original)
+++ tomee/tomee/trunk/tomee/pom.xml Thu Jul 24 22:40:36 2014
@@ -347,7 +347,7 @@
       </dependency>
       <dependency>
         <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat7-websocket</artifactId>
+        <artifactId>tomcat-websocket</artifactId>
         <version>${tomcat.version}</version>
       </dependency>
       <dependency>

Modified: tomee/tomee/trunk/tomee/tomee-catalina/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/pom.xml Thu Jul 24 22:40:36 2014
@@ -101,7 +101,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.tomcat</groupId>
-      <artifactId>tomcat7-websocket</artifactId>
+      <artifactId>tomcat-websocket</artifactId>
       <scope>provided</scope>
     </dependency>
     <dependency>

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java Thu Jul 24 22:40:36 2014
@@ -111,10 +111,10 @@ public class Contexts {
     }
 
     private static File engineBase(final Context standardContext) {
-        String base=System.getProperty(Globals.CATALINA_BASE_PROP);
+        final String base = System.getProperty(Globals.CATALINA_BASE_PROP);
         if( base == null ) {
             final StandardEngine eng = (StandardEngine) standardContext.getParent().getParent();
-            base = eng.getBaseDir();
+            return eng.getCatalinaBase();
         }
         return new File(base);
     }

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java Thu Jul 24 22:40:36 2014
@@ -107,17 +107,11 @@ public class GlobalListenerSupport imple
             } else if (Lifecycle.BEFORE_START_EVENT.equals(type)) {
                 contextListener.beforeStart(standardContext);
             } else if (Lifecycle.START_EVENT.equals(type)) {
-                if (TomcatHelper.isTomcat7()) {
-                    standardContext.addParameter("openejb.start.late", "true");
-                }
-
+                standardContext.addParameter("openejb.start.late", "true");
                 contextListener.start(standardContext);
             } else if (Lifecycle.AFTER_START_EVENT.equals(type)) {
                 contextListener.afterStart(standardContext);
-
-                if (TomcatHelper.isTomcat7()) {
-                    standardContext.removeParameter("openejb.start.late");
-                }
+                standardContext.removeParameter("openejb.start.late");
             } else if (Lifecycle.BEFORE_STOP_EVENT.equals(type)) {
                 contextListener.beforeStop(standardContext);
             } else if (Lifecycle.STOP_EVENT.equals(type)) {

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java Thu Jul 24 22:40:36 2014
@@ -21,10 +21,11 @@ import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleEvent;
 import org.apache.catalina.LifecycleListener;
 import org.apache.catalina.core.StandardContext;
+import org.apache.tomee.catalina.scan.EmptyScanner;
 
 public class IgnoredStandardContext extends StandardContext {
     public IgnoredStandardContext() {
-        setProcessTlds(false);
+        setJarScanner(new EmptyScanner());
 
         // Tomcat has a stupid rule where a life cycle listener must set
         // configured true, or it will treat it as a failed deployment

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java Thu Jul 24 22:40:36 2014
@@ -16,7 +16,7 @@
  */
 package org.apache.tomee.catalina;
 
-import org.apache.catalina.Container;
+import org.apache.catalina.Context;
 import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.LifecycleListener;
@@ -111,13 +111,13 @@ public class LazyStopLoader implements L
     }
 
     @Override
-    public Container getContainer() {
-        return delegate.getContainer();
+    public Context getContext() {
+        return delegate.getContext();
     }
 
     @Override
-    public void setContainer(final Container container) {
-        delegate.setContainer(container);
+    public void setContext(final Context context) {
+        delegate.setContext(context);
     }
 
     @Override
@@ -131,11 +131,6 @@ public class LazyStopLoader implements L
     }
 
     @Override
-    public String getInfo() {
-        return delegate.getInfo();
-    }
-
-    @Override
     public boolean getReloadable() {
         return delegate.getReloadable();
     }
@@ -151,16 +146,6 @@ public class LazyStopLoader implements L
     }
 
     @Override
-    public void addRepository(final String repository) {
-        delegate.addRepository(repository);
-    }
-
-    @Override
-    public String[] findRepositories() {
-        return delegate.findRepositories();
-    }
-
-    @Override
     public boolean modified() {
         return delegate.modified();
     }

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java Thu Jul 24 22:40:36 2014
@@ -21,18 +21,10 @@ import org.apache.catalina.Context;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.core.StandardContext;
 import org.apache.catalina.core.StandardWrapper;
-import org.apache.catalina.deploy.ApplicationListener;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.catalina.deploy.WebXml;
+import org.apache.catalina.deploy.NamingResourcesImpl;
 import org.apache.catalina.realm.DataSourceRealm;
 import org.apache.catalina.startup.ContextConfig;
 import org.apache.naming.factory.Constants;
-import org.apache.naming.resources.BaseDirContext;
-import org.apache.naming.resources.DirContextURLConnection;
-import org.apache.naming.resources.DirContextURLStreamHandler;
-import org.apache.naming.resources.ProxyDirContext;
-import org.apache.openejb.OpenEJBRuntimeException;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.ClassListInfo;
 import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
@@ -49,9 +41,11 @@ import org.apache.openejb.loader.SystemI
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.URLs;
-import org.apache.openejb.util.reflection.Reflections;
 import org.apache.tomcat.util.bcel.classfile.AnnotationEntry;
 import org.apache.tomcat.util.bcel.classfile.ElementValuePair;
+import org.apache.tomcat.util.descriptor.web.ContextResource;
+import org.apache.tomcat.util.descriptor.web.JspPropertyGroup;
+import org.apache.tomcat.util.descriptor.web.WebXml;
 import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomee.catalina.realm.TomEEDataSourceRealm;
 import org.apache.tomee.common.NamingUtil;
@@ -90,6 +84,7 @@ public class OpenEJBContextConfig extend
     private static final String MYFACES_TOMEEM_CONTAINER_INITIALIZER = "org.apache.tomee.myfaces.TomEEMyFacesContainerInitializer";
     private static final String TOMEE_MYFACES_CONTEXT_LISTENER = "org.apache.tomee.myfaces.TomEEMyFacesContextListener";
     private static final String ADJUST_DATASOURCE_JNDI_NAMES = SystemInstance.get().getProperty("tomee.resources.adjust-web-xml-jndi-name", "true");
+    private static final String DEFERRED_SYNTAX = SystemInstance.get().getProperty("tomee.webxml.deferred-urls");
     private static final File BASE = SystemInstance.get().getBase().getDirectory();
 
     private TomcatWebAppBuilder.StandardContextInfo info;
@@ -252,7 +247,7 @@ public class OpenEJBContextConfig extend
 
     @Override
     protected void contextConfig(final Digester digester) {
-        final NamingResources resources;
+        final NamingResourcesImpl resources;
         if (context != null) {
             resources = context.getNamingResources();
         } else {
@@ -273,7 +268,7 @@ public class OpenEJBContextConfig extend
             return;
         }
 
-        final NamingResources resources = context.getNamingResources();
+        final NamingResourcesImpl resources = context.getNamingResources();
         if (resources == null) {
             return;
         }
@@ -339,7 +334,20 @@ public class OpenEJBContextConfig extend
                 prefix = prefix.substring(1);
             }
         }
-        return new OpenEJBWebXml(prefix);
+        final OpenEJBWebXml webXml = new OpenEJBWebXml(prefix);
+
+        if (DEFERRED_SYNTAX != null) {
+            for (final String s : DEFERRED_SYNTAX.split(",")) {
+                if (!s.isEmpty()) {
+                    final JspPropertyGroup propertyGroup = new JspPropertyGroup();
+                    propertyGroup.addUrlPattern(s);
+                    propertyGroup.setDeferredSyntax("true");
+                    webXml.addJspPropertyGroup(propertyGroup);
+                }
+            }
+        }
+
+        return webXml;
     }
 
     public class OpenEJBWebXml extends WebXml {
@@ -382,7 +390,7 @@ public class OpenEJBContextConfig extend
             final Class<?> myfacesInitializer = Class.forName(MYFACES_TOMEEM_CONTAINER_INITIALIZER, true, classLoader);
             final ServletContainerInitializer instance = (ServletContainerInitializer) myfacesInitializer.newInstance();
             context.addServletContainerInitializer(instance, getJsfClasses(context));
-            context.addApplicationListener(new ApplicationListener(TOMEE_MYFACES_CONTEXT_LISTENER, false)); // cleanup listener
+            context.addApplicationListener(TOMEE_MYFACES_CONTEXT_LISTENER); // cleanup listener
         } catch (final Exception ignored) {
             // no-op
         } catch (final NoClassDefFoundError error) {
@@ -535,33 +543,8 @@ public class OpenEJBContextConfig extend
         try {
             currentUrlAsFile = URLs.toFile(currentUrl);
         } catch (final IllegalArgumentException iae) {
-            if ("jndi".equals(currentUrl.getProtocol())) {
-                String file = currentUrl.getFile();
-                try {
-                    final URLConnection connection = currentUrl.openConnection();
-                    if (connection instanceof DirContextURLConnection) {
-                        final DirContextURLStreamHandler handler = DirContextURLStreamHandler.class.cast(Reflections.get(currentUrl, "handler"));
-                        final ProxyDirContext dirContext = ProxyDirContext.class.cast(Reflections.get(handler, "context"));
-                        final String host = String.class.cast(Reflections.get(dirContext, "hostName"));
-                        final String contextPath = String.class.cast(Reflections.get(dirContext, "contextPath"));
-                        final Object context = Reflections.get(dirContext, "dirContext");
-
-                        if (BaseDirContext.class.isInstance(context)) {
-                            file = file.replace("/" + host + contextPath, BaseDirContext.class.cast(context).getDocBase());
-                        } else {
-                            throw new OpenEJBRuntimeException("Context not supported: " + context);
-                        }
-
-                        currentUrlAsFile = new File(file);
-                    } else {
-                        throw new OpenEJBRuntimeException("can't find webapp [" + webAppInfo.contextRoot + "], connection is not a DirContextURLConnection " + connection);
-                    }
-                } catch (final Exception ex) {
-                    throw new OpenEJBRuntimeException("can't find webapp [" + webAppInfo.contextRoot + "]", ex);
-                }
-            } else {
-                throw new OpenEJBRuntimeException("protocol not supported '" + currentUrl.getProtocol() + "'");
-            }
+            logger.error("Don't know this url: " + currentUrl);
+            return;
         }
 
         internalProcessAnnotations(currentUrlAsFile, webAppInfo, fragment);

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java Thu Jul 24 22:40:36 2014
@@ -20,14 +20,7 @@ import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleEvent;
 import org.apache.catalina.LifecycleListener;
 import org.apache.catalina.core.StandardServer;
-import org.apache.catalina.deploy.ContextEjb;
-import org.apache.catalina.deploy.ContextEnvironment;
-import org.apache.catalina.deploy.ContextLocalEjb;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceEnvRef;
-import org.apache.catalina.deploy.ContextResourceLink;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.catalina.deploy.ResourceBase;
+import org.apache.catalina.deploy.NamingResourcesImpl;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.assembler.classic.ResourceInfo;
@@ -35,6 +28,13 @@ import org.apache.openejb.assembler.dyna
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
+import org.apache.tomcat.util.descriptor.web.ContextEjb;
+import org.apache.tomcat.util.descriptor.web.ContextEnvironment;
+import org.apache.tomcat.util.descriptor.web.ContextLocalEjb;
+import org.apache.tomcat.util.descriptor.web.ContextResource;
+import org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef;
+import org.apache.tomcat.util.descriptor.web.ContextResourceLink;
+import org.apache.tomcat.util.descriptor.web.ResourceBase;
 
 import javax.naming.Context;
 import javax.naming.NamingException;
@@ -58,7 +58,7 @@ public class OpenEJBNamingContextListene
     /**
      * Associated naming resources.
      */
-    private final NamingResources namingResources;
+    private final NamingResourcesImpl namingResources;
 
     public OpenEJBNamingContextListener(final StandardServer standardServer) {
         this.standardServer = standardServer;

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java Thu Jul 24 22:40:36 2014
@@ -16,22 +16,22 @@
  */
 package org.apache.tomee.catalina;
 
-import org.apache.catalina.deploy.ContextEjb;
-import org.apache.catalina.deploy.ContextEnvironment;
-import org.apache.catalina.deploy.ContextLocalEjb;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceEnvRef;
-import org.apache.catalina.deploy.ContextResourceLink;
-import org.apache.catalina.deploy.ContextService;
-import org.apache.catalina.deploy.MessageDestinationRef;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.catalina.deploy.ResourceBase;
+import org.apache.catalina.deploy.NamingResourcesImpl;
+import org.apache.tomcat.util.descriptor.web.ContextEjb;
+import org.apache.tomcat.util.descriptor.web.ContextEnvironment;
+import org.apache.tomcat.util.descriptor.web.ContextLocalEjb;
+import org.apache.tomcat.util.descriptor.web.ContextResource;
+import org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef;
+import org.apache.tomcat.util.descriptor.web.ContextResourceLink;
+import org.apache.tomcat.util.descriptor.web.ContextService;
+import org.apache.tomcat.util.descriptor.web.MessageDestinationRef;
+import org.apache.tomcat.util.descriptor.web.ResourceBase;
 import org.apache.tomee.common.NamingUtil;
 
 import java.util.ArrayList;
 import java.util.Collection;
 
-public class OpenEJBNamingResource extends NamingResources {
+public class OpenEJBNamingResource extends NamingResourcesImpl {
     private static final String JAVA_PREFIX = "java:";
 
     private boolean isTomcatResource;
@@ -41,7 +41,7 @@ public class OpenEJBNamingResource exten
         // no-op
     }
 
-    public OpenEJBNamingResource(final NamingResources namingResources) {
+    public OpenEJBNamingResource(final NamingResourcesImpl namingResources) {
         if (namingResources != null) {
             isTomcatResource = true;
             for (final ContextResource resource : namingResources.findResources()) {

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=1613316&r1=1613315&r2=1613316&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 Jul 24 22:40:36 2014
@@ -27,13 +27,13 @@ import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.ProvisioningUtil;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.OpenEjbVersion;
-import org.apache.tomee.TomEELogConfigurer;
 import org.apache.tomee.loader.TomcatHelper;
 
 import java.io.File;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -167,8 +167,6 @@ public class ServerListener implements L
 
                 loader.initialize(properties);
 
-                TomEELogConfigurer.configureLogs();
-
                 listenerInstalled.set(true);
             } catch (final Exception e) {
                 LOGGER.log(Level.SEVERE, "TomEE Listener can't start OpenEJB", e);
@@ -201,6 +199,12 @@ public class ServerListener implements L
             field.setAccessible(true);
             final String version = OpenEjbVersion.get().getVersion();
             final String tomeeVersion = (Integer.parseInt(Character.toString(version.charAt(0))) - 3) + version.substring(1, version.length());
+            final int modifiers = field.getModifiers();
+            if (Modifier.isFinal(modifiers)) {
+                final Field modifiersField = Field.class.getDeclaredField("modifiers");
+                modifiersField.setAccessible(true);
+                modifiersField.setInt(field, modifiers & ~Modifier.FINAL);
+            }
             field.set(null, value.substring(0, slash) + " (TomEE)" + value.substring(slash) + " (" + tomeeVersion + ")");
         } catch (final Exception e) {
             // no-op

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java Thu Jul 24 22:40:36 2014
@@ -21,14 +21,12 @@ import org.apache.catalina.ha.ClusterLis
 import org.apache.catalina.ha.tcp.SimpleTcpCluster;
 import org.apache.tomee.catalina.cluster.TomEEClusterListener;
 
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Iterator;
 import java.util.List;
 
 public class SimpleTomEETcpCluster extends SimpleTcpCluster {
     public SimpleTomEETcpCluster(final SimpleTcpCluster from) {
-        clusterListeners = new ArrayList<ClusterListener>(Arrays.asList(from.findClusterListeners()));
+        clusterListeners.addAll(Arrays.asList(from.findClusterListeners()));
 
         setClusterName(from.getClusterName());
         setContainer(from.getContainer());
@@ -45,12 +43,6 @@ public class SimpleTomEETcpCluster exten
         for (final Valve valve : from.getValves()) {
             addValve(valve);
         }
-
-        final Iterator<String> propertyNames = from.getPropertyNames();
-        while (propertyNames.hasNext()) {
-            final String next = propertyNames.next();
-            setProperty(next, from.getProperty(next));
-        }
     }
 
     @Override

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java Thu Jul 24 22:40:36 2014
@@ -34,11 +34,6 @@ public class TomEERealm extends Combined
     private final ThreadLocal<Request> requests = new ThreadLocal<Request>();
 
     @Override
-    public String getInfo() {
-        return INFO;
-    }
-
-    @Override
     public Principal authenticate(final String username, final String password) {
         return logInTomEE(super.authenticate(username, password));
     }

Copied: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java (from r1612877, tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java?p2=tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java&p1=tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java&r1=1612877&r2=1613316&rev=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java Thu Jul 24 22:40:36 2014
@@ -18,16 +18,28 @@ package org.apache.tomee.catalina;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
+import org.apache.catalina.LifecycleState;
+import org.apache.catalina.WebResourceRoot;
+import org.apache.catalina.WebResourceSet;
 import org.apache.catalina.loader.WebappClassLoader;
+import org.apache.catalina.webresources.DirResourceSet;
+import org.apache.catalina.webresources.FileResourceSet;
+import org.apache.catalina.webresources.JarResourceSet;
+import org.apache.catalina.webresources.JarWarResourceSet;
+import org.apache.catalina.webresources.StandardRoot;
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.classloader.ClassLoaderConfigurer;
+import org.apache.openejb.classloader.CompositeClassLoaderConfigurer;
 import org.apache.openejb.classloader.WebAppEnricher;
 import org.apache.openejb.config.NewLoaderLogic;
+import org.apache.openejb.config.QuickJarsTxtParser;
 import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.URLs;
 import org.apache.openejb.util.classloader.URLClassLoaderFirst;
+import org.apache.openejb.util.reflection.Reflections;
 
 import java.io.File;
 import java.io.IOException;
@@ -40,9 +52,11 @@ import java.util.Collections;
 import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
 
-public class LazyStopWebappClassLoader extends WebappClassLoader {
-    private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, LazyStopWebappClassLoader.class.getName());
+public class TomEEWebappClassLoader extends WebappClassLoader {
+    private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TomEEWebappClassLoader.class.getName());
     private static final ThreadLocal<ClassLoaderConfigurer> INIT_CONFIGURER = new ThreadLocal<ClassLoaderConfigurer>();
     private static final ThreadLocal<Context> CONTEXT = new ThreadLocal<Context>();
 
@@ -53,13 +67,14 @@ public class LazyStopWebappClassLoader e
     private ClassLoaderConfigurer configurer;
     private final int hashCode;
     private Collection<File> additionalRepos;
+    private volatile ClassLoader j2seClassLoader;
 
-    public LazyStopWebappClassLoader() {
+    public TomEEWebappClassLoader() {
         j2seClassLoader = getSystemClassLoader();
         hashCode = construct();
     }
 
-    public LazyStopWebappClassLoader(final ClassLoader parent) {
+    public TomEEWebappClassLoader(final ClassLoader parent) {
         super(parent);
         j2seClassLoader = getSystemClassLoader();
         hashCode = construct();
@@ -130,8 +145,30 @@ public class LazyStopWebappClassLoader e
     }
 
     @Override
-    protected boolean validate(final String name) { // static validation, mainly container stuff
-        return !URLClassLoaderFirst.shouldSkip(name);
+    public void setResources(final WebResourceRoot resources) {
+        this.resources = resources;
+        if (StandardRoot.class.isInstance(resources)) {
+            final List<WebResourceSet> jars = (List<WebResourceSet>) Reflections.get(resources, "jarResources");
+            if (jars != null && !jars.isEmpty()) {
+                final Iterator<WebResourceSet> jarIt = jars.iterator();
+                while (jarIt.hasNext()) {
+                    final WebResourceSet set = jarIt.next();
+                    if (set.getBaseUrl() == null) {
+                        continue;
+                    }
+                    final File file = URLs.toFile(set.getBaseUrl());
+                    try {
+                        if (file.exists() && (!TomEEClassLoaderEnricher.validateJarFile(file) || !jarIsAccepted(file))) {
+                            // need to remove this resource
+                            LOGGER.warning("Removing " + file.getAbsolutePath() + " since it is offending");
+                            jarIt.remove();
+                        }
+                    } catch (final IOException e) {
+                        // ignore
+                    }
+                }
+            }
+        }
     }
 
     @Override
@@ -140,7 +177,7 @@ public class LazyStopWebappClassLoader e
     }
 
     public void internalStop() throws LifecycleException {
-        if (isStarted()) {
+        if (getState().isAvailable()) {
             // reset classloader because of tomcat classloaderlogmanager
             // to be sure we reset the right loggers
             final ClassLoader loader = Thread.currentThread().getContextClassLoader();
@@ -175,7 +212,6 @@ public class LazyStopWebappClassLoader e
             if (root != null) {
                 final String externalRepositories = SystemInstance.get().getProperty("tomee." + new File(root).getName() + ".externalRepositories");
                 if (externalRepositories != null) {
-                    setSearchExternalFirst(true);
                     for (final String additional : externalRepositories.split(",")) {
                         final String trim = additional.trim();
                         if (!trim.isEmpty()) {
@@ -202,7 +238,7 @@ public class LazyStopWebappClassLoader e
         if (additionalRepos != null) {
             for (final File f : additionalRepos) {
                 try { // not addURL to look here first
-                    super.addRepository(f.toURI().toURL().toExternalForm());
+                    super.addURL(f.toURI().toURL());
                 } catch (final MalformedURLException e) {
                     LOGGER.error(e.getMessage());
                 }
@@ -222,6 +258,14 @@ public class LazyStopWebappClassLoader e
         for (final URL url : SystemInstance.get().getComponent(WebAppEnricher.class).enrichment(this)) {
             super.addURL(url);
         }
+
+        // WEB-INF/jars.xml
+        final File war = Contexts.warPath(CONTEXT.get());
+        final File jarsXml = new File(war, "WEB-INF/" + QuickJarsTxtParser.FILE_NAME);
+        final ClassLoaderConfigurer configurerTxt = QuickJarsTxtParser.parse(jarsXml);
+        if (configurerTxt != null) {
+            configurer = new CompositeClassLoaderConfigurer(configurer, configurerTxt);
+        }
     }
 
     public void addURL(final URL url) {
@@ -230,11 +274,6 @@ public class LazyStopWebappClassLoader e
         }
     }
 
-    @Override
-    protected boolean validateJarFile(final File file) throws IOException {
-        return super.validateJarFile(file) && TomEEClassLoaderEnricher.validateJarFile(file) && jarIsAccepted(file);
-    }
-
     private boolean jarIsAccepted(final File file) {
         if (configurer == null) {
             return true;
@@ -257,7 +296,7 @@ public class LazyStopWebappClassLoader e
 
     @Override
     public InputStream getResourceAsStream(final String name) {
-        if (!isStarted()) {
+        if (!getState().isAvailable()) {
             return null;
         }
         return super.getResourceAsStream(name);
@@ -265,7 +304,7 @@ public class LazyStopWebappClassLoader e
 
     @Override
     public Enumeration<URL> getResources(final String name) throws IOException {
-        if (!isStarted()) {
+        if (!getState().isAvailable()) {
             return null;
         }
 

Copied: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java (from r1612877, tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java?p2=tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java&p1=tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java&r1=1612877&r2=1613316&rev=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java Thu Jul 24 22:40:36 2014
@@ -18,14 +18,12 @@ package org.apache.tomee.catalina;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
-import org.apache.catalina.loader.VirtualWebappLoader;
+import org.apache.catalina.loader.WebappLoader;
 import org.apache.openejb.ClassLoaderUtil;
 import org.apache.openejb.classloader.ClassLoaderConfigurer;
 import org.apache.openejb.classloader.CompositeClassLoaderConfigurer;
 import org.apache.openejb.config.QuickJarsTxtParser;
-import org.apache.openejb.loader.ProvisioningUtil;
 import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.reflection.Reflections;
 
 import java.io.File;
 
@@ -42,7 +40,7 @@ import java.io.File;
  * />
  * </Context>
  */
-public class ProvisioningWebappLoader extends VirtualWebappLoader {
+public class TomEEWebappLoader extends WebappLoader {
     public static final boolean SKIP_BACKGROUND_PROCESS = "true".equals(SystemInstance.get().getProperty("tomee.classloader.skip-background-process", "false"));
 
     @Override
@@ -52,13 +50,13 @@ public class ProvisioningWebappLoader ex
         }
 
         final ClassLoader classloader = super.getClassLoader();
-        if (classloader instanceof LazyStopWebappClassLoader) {
-            final LazyStopWebappClassLoader lazyStopWebappClassLoader = (LazyStopWebappClassLoader) classloader;
-            lazyStopWebappClassLoader.restarting();
+        if (classloader instanceof TomEEWebappClassLoader) {
+            final TomEEWebappClassLoader tomEEWebappClassLoader = (TomEEWebappClassLoader) classloader;
+            tomEEWebappClassLoader.restarting();
             try {
                 super.backgroundProcess();
             } finally {
-                lazyStopWebappClassLoader.restarted();
+                tomEEWebappClassLoader.restarted();
             }
         } else {
             super.backgroundProcess();
@@ -75,45 +73,29 @@ public class ProvisioningWebappLoader ex
 
     @Override
     protected void startInternal() throws LifecycleException {
-        // standard tomcat part
-        final StringBuilder builder = new StringBuilder();
-        final String classpath = String.class.cast(Reflections.get(this, "virtualClasspath"));
-        if (classpath != null && !classpath.isEmpty()) {
-            for (final String s : String.class.cast(classpath).split(";")) {
-                builder.append(ProvisioningUtil.realLocation(s)).append(";");
-            }
-        }
+        final Context context = getContext();
 
-        ClassLoaderConfigurer configurer = ClassLoaderUtil.configurer(getContainer().getName());
+        ClassLoaderConfigurer configurer = ClassLoaderUtil.configurer(context.getName());
 
         // WEB-INF/jars.xml
-        if (Context.class.isInstance(getContainer())) {
-            final File war = Contexts.warPath(Context.class.cast(getContainer()));
-            final File jarsXml = new File(war, "WEB-INF/" + QuickJarsTxtParser.FILE_NAME);
-            final ClassLoaderConfigurer configurerTxt = QuickJarsTxtParser.parse(jarsXml);
-            if (configurerTxt != null) {
-                configurer = new CompositeClassLoaderConfigurer(configurer, configurerTxt);
-            }
-        }
-
-        // clean up builder and set classpath to delegate to parent init
-        String cp = builder.toString();
-        if (cp.endsWith(";")) {
-            cp = cp.substring(0, cp.length() - 1);
+        final File war = Contexts.warPath(Context.class.cast(context));
+        final File jarsXml = new File(war, "WEB-INF/" + QuickJarsTxtParser.FILE_NAME);
+        final ClassLoaderConfigurer configurerTxt = QuickJarsTxtParser.parse(jarsXml);
+        if (configurerTxt != null) {
+            configurer = new CompositeClassLoaderConfigurer(configurer, configurerTxt);
         }
-        Reflections.set(this, "virtualClasspath", cp);
 
-        LazyStopWebappClassLoader.initContext(configurer);
-        LazyStopWebappClassLoader.initContext(Context.class.cast(getContainer()));
+        TomEEWebappClassLoader.initContext(configurer);
+        TomEEWebappClassLoader.initContext(context);
         try {
             super.startInternal();
         } finally {
-            LazyStopWebappClassLoader.cleanContext();
+            TomEEWebappClassLoader.cleanContext();
         }
     }
 
     @Override
     public String toString() {
-        return "Provisioning" + super.toString();
+        return "TomEE" + super.toString();
     }
 }