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 [2/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...

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java Thu Jul 24 22:40:36 2014
@@ -19,12 +19,7 @@ package org.apache.tomee.catalina;
 import org.apache.catalina.core.NamingContextListener;
 import org.apache.catalina.core.StandardContext;
 import org.apache.catalina.core.StandardServer;
-import org.apache.catalina.deploy.ContextEjb;
-import org.apache.catalina.deploy.ContextEnvironment;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceEnvRef;
-import org.apache.catalina.deploy.ContextTransaction;
-import org.apache.catalina.deploy.NamingResources;
+import org.apache.catalina.deploy.NamingResourcesImpl;
 import org.apache.naming.ContextAccessController;
 import org.apache.naming.ContextBindings;
 import org.apache.naming.factory.Constants;
@@ -54,6 +49,12 @@ import org.apache.openejb.persistence.Jt
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.Contexts;
 import org.apache.openejb.util.URLs;
+import org.apache.tomcat.util.descriptor.web.ContextEjb;
+import org.apache.tomcat.util.descriptor.web.ContextEnvironment;
+import org.apache.tomcat.util.descriptor.web.ContextResource;
+import org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef;
+import org.apache.tomcat.util.descriptor.web.ContextService;
+import org.apache.tomcat.util.descriptor.web.ContextTransaction;
 import org.apache.tomee.common.EjbFactory;
 import org.apache.tomee.common.EnumFactory;
 import org.apache.tomee.common.LookupFactory;
@@ -100,7 +101,7 @@ public class TomcatJndiBuilder {
     public TomcatJndiBuilder(final StandardContext standardContext, final WebAppInfo webAppInfo, final Collection<Injection> injections) {
         this.injections = injections;
         this.standardContext = standardContext;
-        this.namingContextListener = BackportUtil.getNamingContextListener(standardContext);
+        this.namingContextListener = standardContext.getNamingContextListener();
         this.webAppInfo = webAppInfo;
 
         final String parameter = standardContext.findParameter("openejb.start.late");
@@ -117,7 +118,7 @@ public class TomcatJndiBuilder {
 
     public void mergeJndi() throws OpenEJBException {
 
-        final NamingResources naming = standardContext.getNamingResources();
+        final NamingResourcesImpl naming = standardContext.getNamingResources();
         final URI moduleUri = URLs.uri(webAppInfo.moduleId);
 
         for (final EnvEntryInfo ref : webAppInfo.jndiEnc.envEntries) {
@@ -152,7 +153,9 @@ public class TomcatJndiBuilder {
 
     public static void mergeJava(final StandardContext standardContext) {
         final ContainerSystem cs = SystemInstance.get().getComponent(ContainerSystem.class);
-        ContextAccessController.setWritable(standardContext.getNamingContextListener().getName(), standardContext);
+        final String name = standardContext.getNamingContextListener().getName();
+        final Object namingToken = standardContext.getNamingToken();
+        ContextAccessController.setWritable(name, namingToken);
         Context root = null;
         try {
             root = (Context) ContextBindings.getClassLoader().lookup("");
@@ -163,7 +166,7 @@ public class TomcatJndiBuilder {
         // classical deployment - needed because can be overriden through META-INF/context.xml
         String path = standardContext.findParameter(TomcatWebAppBuilder.OPENEJB_WEBAPP_MODULE_ID);
         if (path == null) { // standardContext not created by OpenEJB
-            path = standardContext.getHostname();
+            path = org.apache.tomee.catalina.Contexts.getHostname(standardContext);
             if (standardContext.getPath().startsWith("/")) {
                 path += standardContext.getPath();
             } else {
@@ -292,7 +295,7 @@ public class TomcatJndiBuilder {
             // no-op
         }
 
-        ContextAccessController.setReadOnly(standardContext.getNamingContextListener().getName());
+        ContextAccessController.setReadOnly(name);
     }
 
     private static String removeCompEnv(final String key) {
@@ -338,7 +341,7 @@ public class TomcatJndiBuilder {
         return value;
     }
 
-    public void mergeRef(final NamingResources naming, final EnvEntryInfo ref) {
+    public void mergeRef(final NamingResourcesImpl naming, final EnvEntryInfo ref) {
 //        if (!ref.referenceName.startsWith("comp/")) return;
         if ("java.lang.Class".equals(ref.type)) {
             final ContextResourceEnvRef resourceEnv = new ContextResourceEnvRef();
@@ -393,7 +396,7 @@ public class TomcatJndiBuilder {
         }
 
         if (replaceEntry) {
-            ContextAccessController.setWritable(namingContextListener.getName(), standardContext);
+            ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
             if (!addEntry) {
                 namingContextListener.removeEnvironment(environment.getName());
             }
@@ -402,7 +405,7 @@ public class TomcatJndiBuilder {
         }
     }
 
-    private boolean isLookupRef(final NamingResources naming, final InjectableInfo ref) {
+    private boolean isLookupRef(final NamingResourcesImpl naming, final InjectableInfo ref) {
         if (ref.location == null) {
             return false;
         }
@@ -426,7 +429,7 @@ public class TomcatJndiBuilder {
         return true;
     }
 
-    public void mergeRef(final NamingResources naming, final EjbReferenceInfo ref) {
+    public void mergeRef(final NamingResourcesImpl naming, final EjbReferenceInfo ref) {
         if (isLookupRef(naming, ref)) {
             return;
         }
@@ -463,7 +466,7 @@ public class TomcatJndiBuilder {
         }
 
         if (replaceEntry) {
-            ContextAccessController.setWritable(namingContextListener.getName(), standardContext);
+            ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
             if (!addEntry) {
                 namingContextListener.removeEjb(ejb.getName());
             }
@@ -472,7 +475,7 @@ public class TomcatJndiBuilder {
         }
     }
 
-    public void mergeRef(final NamingResources naming, final EjbLocalReferenceInfo ref) {
+    public void mergeRef(final NamingResourcesImpl naming, final EjbLocalReferenceInfo ref) {
         if (isLookupRef(naming, ref)) {
             return;
         }
@@ -508,7 +511,7 @@ public class TomcatJndiBuilder {
         }
 
         if (replaceEntry) {
-            ContextAccessController.setWritable(namingContextListener.getName(), standardContext);
+            ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
             if (!addEntry) {
                 namingContextListener.removeEjb(ejb.getName());
             }
@@ -518,7 +521,7 @@ public class TomcatJndiBuilder {
     }
 
     @SuppressWarnings({"UnusedDeclaration"})
-    public void mergeRef(final NamingResources naming, final PersistenceContextReferenceInfo ref, final URI moduleUri) {
+    public void mergeRef(final NamingResourcesImpl naming, final PersistenceContextReferenceInfo ref, final URI moduleUri) {
         if (isLookupRef(naming, ref)) {
             return;
         }
@@ -561,7 +564,7 @@ public class TomcatJndiBuilder {
         }
 
         if (replaceEntry) {
-            ContextAccessController.setWritable(namingContextListener.getName(), standardContext);
+            ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
             if (!addEntry) {
                 namingContextListener.removeResource(resource.getName());
             }
@@ -571,7 +574,7 @@ public class TomcatJndiBuilder {
     }
 
     @SuppressWarnings({"UnusedDeclaration"})
-    public void mergeRef(final NamingResources naming, final PersistenceUnitReferenceInfo ref, final URI moduleUri) {
+    public void mergeRef(final NamingResourcesImpl naming, final PersistenceUnitReferenceInfo ref, final URI moduleUri) {
         if (isLookupRef(naming, ref)) {
             return;
         }
@@ -612,7 +615,7 @@ public class TomcatJndiBuilder {
         }
 
         if (replaceEntry) {
-            ContextAccessController.setWritable(namingContextListener.getName(), standardContext);
+            ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
             if (!addEntry) {
                 namingContextListener.removeResource(resource.getName());
             }
@@ -621,7 +624,7 @@ public class TomcatJndiBuilder {
         }
     }
 
-    public void mergeRef(final NamingResources naming, final ResourceReferenceInfo ref) {
+    public void mergeRef(final NamingResourcesImpl naming, final ResourceReferenceInfo ref) {
         if (isLookupRef(naming, ref)) {
             return;
         }
@@ -653,7 +656,7 @@ public class TomcatJndiBuilder {
         }
 
         if (replaceEntry) {
-            ContextAccessController.setWritable(namingContextListener.getName(), standardContext);
+            ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
             if (!addEntry) {
                 namingContextListener.removeResource(resource.getName());
             }
@@ -662,7 +665,7 @@ public class TomcatJndiBuilder {
         }
     }
 
-    public void mergeRef(final NamingResources naming, final ResourceEnvReferenceInfo ref) {
+    public void mergeRef(final NamingResourcesImpl naming, final ResourceEnvReferenceInfo ref) {
         if (isLookupRef(naming, ref)) {
             return;
         }
@@ -709,7 +712,7 @@ public class TomcatJndiBuilder {
         }
 
         if (replaceEntry) {
-            ContextAccessController.setWritable(namingContextListener.getName(), standardContext);
+            ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
             if (!addEntry) {
                 namingContextListener.removeResourceEnvRef(resourceEnv.getName());
             }
@@ -718,7 +721,7 @@ public class TomcatJndiBuilder {
         }
     }
 
-    public void mergeRef(final NamingResources naming, final ServiceReferenceInfo ref) {
+    public void mergeRef(final NamingResourcesImpl naming, final ServiceReferenceInfo ref) {
         if (isLookupRef(naming, ref)) {
             return;
         }
@@ -792,11 +795,12 @@ public class TomcatJndiBuilder {
         }
 
         // if there was a service entry, remove it
-        final String serviceName = BackportUtil.findServiceName(naming, ref.referenceName.replaceAll("^comp/env/", ""));
+        final ContextService service = naming.findService(ref.referenceName.replaceAll("^comp/env/", ""));
+        final String serviceName = service != null ? service.getName() : null;
         if (serviceName != null) {
-            ContextAccessController.setWritable(namingContextListener.getName(), standardContext);
+            ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
             if (!addEntry) {
-                BackportUtil.removeService(namingContextListener, serviceName);
+                namingContextListener.removeService(serviceName);
             }
             ContextAccessController.setReadOnly(namingContextListener.getName());
         }
@@ -808,7 +812,7 @@ public class TomcatJndiBuilder {
 
         // or replace the exisitng resource entry
         if (replaceEntry) {
-            ContextAccessController.setWritable(namingContextListener.getName(), standardContext);
+            ContextAccessController.setWritable(namingContextListener.getName(), standardContext.getNamingToken());
             if (!addEntry) {
                 namingContextListener.removeResource(resource.getName());
             }
@@ -857,7 +861,7 @@ public class TomcatJndiBuilder {
     }
 
     public static void importOpenEJBResourcesInTomcat(final Collection<ResourceInfo> resources, final StandardServer server) {
-        final NamingResources naming = server.getGlobalNamingResources();
+        final NamingResourcesImpl naming = server.getGlobalNamingResources();
 
         for (final ResourceInfo info : resources) {
             final String name = info.id;

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatThreadContextListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatThreadContextListener.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatThreadContextListener.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatThreadContextListener.java Thu Jul 24 22:40:36 2014
@@ -61,7 +61,7 @@ public class TomcatThreadContextListener
             method = ContextBindings.class.getDeclaredMethod("getThreadName");
             method.setAccessible(true);
 
-            final Field threadNameBindingsField = ContextBindings.class.getDeclaredField("threadNameBindings");
+            final Field threadNameBindingsField = ContextBindings.class.getDeclaredField("threadObjectBindings");
             threadNameBindingsField.setAccessible(true);
             threadNameBindings = (Hashtable<Thread, Object>) threadNameBindingsField.get(null);
         } catch (final Exception e) {

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Thu Jul 24 22:40:36 2014
@@ -31,6 +31,7 @@ import org.apache.catalina.Realm;
 import org.apache.catalina.Service;
 import org.apache.catalina.UserDatabase;
 import org.apache.catalina.Valve;
+import org.apache.catalina.WebResourceRoot;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.core.ContainerBase;
 import org.apache.catalina.core.NamingContextListener;
@@ -38,18 +39,9 @@ import org.apache.catalina.core.Standard
 import org.apache.catalina.core.StandardHost;
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.core.StandardWrapper;
-import org.apache.catalina.deploy.ApplicationParameter;
-import org.apache.catalina.deploy.ContextEnvironment;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceLink;
-import org.apache.catalina.deploy.ContextTransaction;
-import org.apache.catalina.deploy.FilterDef;
-import org.apache.catalina.deploy.FilterMap;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.catalina.deploy.ResourceBase;
+import org.apache.catalina.deploy.NamingResourcesImpl;
 import org.apache.catalina.ha.CatalinaCluster;
 import org.apache.catalina.ha.tcp.SimpleTcpCluster;
-import org.apache.catalina.loader.VirtualWebappLoader;
 import org.apache.catalina.loader.WebappLoader;
 import org.apache.catalina.session.StandardManager;
 import org.apache.catalina.startup.Constants;
@@ -59,11 +51,11 @@ import org.apache.catalina.startup.Realm
 import org.apache.catalina.startup.SetAllPropertiesRule;
 import org.apache.catalina.startup.SetNextNamingRule;
 import org.apache.catalina.users.MemoryUserDatabase;
+import org.apache.catalina.webresources.DirResourceSet;
 import org.apache.naming.ContextAccessController;
 import org.apache.naming.ContextBindings;
 import org.apache.naming.ResourceEnvRef;
 import org.apache.naming.ResourceRef;
-import org.apache.naming.resources.FileDirContext;
 import org.apache.openejb.AppContext;
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.BeanType;
@@ -114,18 +106,25 @@ import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
 import org.apache.openejb.util.reflection.Reflections;
 import org.apache.tomcat.InstanceManager;
+import org.apache.tomcat.JarScanFilter;
+import org.apache.tomcat.util.descriptor.web.ApplicationParameter;
+import org.apache.tomcat.util.descriptor.web.ContextEnvironment;
+import org.apache.tomcat.util.descriptor.web.ContextResource;
+import org.apache.tomcat.util.descriptor.web.ContextResourceLink;
+import org.apache.tomcat.util.descriptor.web.ContextTransaction;
+import org.apache.tomcat.util.descriptor.web.FilterDef;
+import org.apache.tomcat.util.descriptor.web.FilterMap;
+import org.apache.tomcat.util.descriptor.web.ResourceBase;
 import org.apache.tomcat.util.digester.Digester;
+import org.apache.tomcat.util.scan.StandardJarScanFilter;
 import org.apache.tomee.catalina.cluster.ClusterObserver;
 import org.apache.tomee.catalina.cluster.TomEEClusterListener;
 import org.apache.tomee.catalina.environment.Hosts;
 import org.apache.tomee.catalina.event.AfterApplicationCreated;
-import org.apache.tomee.catalina.naming.resources.AdditionalDocBase;
-import org.apache.tomee.catalina.naming.resources.EmptyDirContext;
 import org.apache.tomee.catalina.routing.RouterValve;
 import org.apache.tomee.catalina.websocket.JavaEEDefaultServerEnpointConfigurator;
 import org.apache.tomee.common.LegacyAnnotationProcessor;
 import org.apache.tomee.common.NamingUtil;
-import org.apache.tomee.common.TomcatVersion;
 import org.apache.tomee.common.UserTransactionFactory;
 import org.apache.tomee.loader.TomcatHelper;
 import org.apache.webbeans.config.WebBeansContext;
@@ -170,7 +169,6 @@ import java.util.concurrent.atomic.Atomi
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
-import static org.apache.tomee.catalina.BackportUtil.getNamingContextListener;
 import static org.apache.tomee.catalina.Contexts.warPath;
 
 /**
@@ -419,7 +417,7 @@ public class TomcatWebAppBuilder impleme
     public void start(final StandardServer server) {
         if (SystemInstance.get().isDefaultProfile()) { // add user tomee is no user are specified
             try {
-                final NamingResources resources = server.getGlobalNamingResources();
+                final NamingResourcesImpl resources = server.getGlobalNamingResources();
                 final ContextResource userDataBaseResource = resources.findResource("UserDatabase");
                 final UserDatabase db = (UserDatabase) server.getGlobalNamingContext().lookup(userDataBaseResource.getName());
                 if (!db.getUsers().hasNext() && db instanceof MemoryUserDatabase) {
@@ -808,7 +806,12 @@ public class TomcatWebAppBuilder impleme
             standardContext.setReloadable(true);
         }
         if (SKIP_TLD) {
-            standardContext.setProcessTlds(false);
+            if (standardContext.getJarScanner() != null && standardContext.getJarScanner().getJarScanFilter() != null) {
+                final JarScanFilter jarScanFilter = standardContext.getJarScanner().getJarScanFilter();
+                if (StandardJarScanFilter.class.isInstance(jarScanFilter)) {
+                    StandardJarScanFilter.class.cast(jarScanFilter).setDefaultTldScan(false);
+                }
+            }
         }
 
         final String name = standardContext.getName();
@@ -1033,11 +1036,31 @@ public class TomcatWebAppBuilder impleme
 
         // can only be done until here (before_start)
         if (Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.skip-war-resources", "false"))) {
-            if (!EmptyDirContext.class.isInstance(Reflections.get(standardContext, "webappResources"))) {
-                final EmptyDirContext resources = new EmptyDirContext(standardContext);
-                standardContext.setResources(resources);
-                standardContext.setCachingAllowed(resources.isCached());
-            } // else don't redo it otherwise it just doesn't work when reload() is called
+            /* play with StandardRoot to get:
+
+            @Override
+            protected File file(final String name) {
+                if (shouldLookup(name)) {
+                    return super.file(name);
+                }
+                if ("/WEB-INF/classes".equals(name)) {
+                    if (context.getLoader() != null && TomEEWebappClassLoader.class.isInstance(context.getLoader().getClassLoader())) {
+                        final Collection<File> repos = TomEEWebappClassLoader.class.cast(context.getLoader().getClassLoader()).getAdditionalRepos();
+                        if (repos != null && !repos.isEmpty()) {
+                            return repos.iterator().next();
+                        }
+                    }
+                }
+                return null;
+            }
+
+            private static boolean shouldLookup(final String name) {
+                return name != null && !name.equals("/WEB-INF/classes")
+                        && (name.matches("/?WEB-INF/[^/]*\\.?[^/]")
+                        || name.startsWith("/WEB-INF/lib") || name.startsWith("WEB-INF/lib")
+                        || name.startsWith("/META-INF/"));
+            }
+             */
         }
     }
 
@@ -1045,8 +1068,10 @@ public class TomcatWebAppBuilder impleme
         final Loader standardContextLoader = standardContext.getLoader();
         if (standardContextLoader != null
                 && (
-                (!VirtualWebappLoader.class.equals(standardContextLoader.getClass()) && !WebappLoader.class.equals(standardContextLoader.getClass()))
-                        || (WebappLoader.class.equals(standardContextLoader.getClass()) && !WebappLoader.class.cast(standardContextLoader).getLoaderClass().startsWith("org.apache.tom")))
+                (!TomEEWebappLoader.class.equals(standardContextLoader.getClass())
+                    && !WebappLoader.class.equals(standardContextLoader.getClass()))
+                        || (WebappLoader.class.equals(standardContextLoader.getClass())
+                                && !WebappLoader.class.cast(standardContextLoader).getLoaderClass().startsWith("org.apache.tom")))
                 ) {
             // custom loader, we don't know it
             // and since we don't have a full delegate pattern for our lazy stop loader
@@ -1055,22 +1080,16 @@ public class TomcatWebAppBuilder impleme
             return;
         }
 
-        if (standardContextLoader != null && ProvisioningWebappLoader.class.isInstance(standardContextLoader)) {
-            standardContextLoader.setContainer(standardContext);
+        if (standardContextLoader != null && TomEEWebappLoader.class.isInstance(standardContextLoader)) {
+            standardContextLoader.setContext(standardContext);
             return; // no need to replace the loader
         }
 
         // we just want to wrap it to lazy stop it (afterstop)
         // to avoid classnotfound in @PreDestoy or destroyApplication()
-        final VirtualWebappLoader loader = new ProvisioningWebappLoader();
+        final TomEEWebappLoader loader = new TomEEWebappLoader();
         loader.setDelegate(standardContext.getDelegate());
-        loader.setLoaderClass(LazyStopWebappClassLoader.class.getName());
-
-        if (VirtualWebappLoader.class.isInstance(standardContextLoader)) {
-            final VirtualWebappLoader vwl = VirtualWebappLoader.class.cast(standardContextLoader);
-            loader.setSearchVirtualFirst(vwl.getSearchVirtualFirst());
-            loader.setVirtualClasspath(String.class.cast(Reflections.get(vwl, "virtualClasspath")));
-        }
+        loader.setLoaderClass(TomEEWebappClassLoader.class.getName());
 
         final Loader lazyStopLoader = new LazyStopLoader(loader);
         standardContext.setLoader(lazyStopLoader);
@@ -1078,14 +1097,12 @@ public class TomcatWebAppBuilder impleme
 
     @Override
     public void configureStart(final StandardContext standardContext) {
-        if (TomcatHelper.isTomcat7()) {
-            TomcatHelper.configureJarScanner(standardContext);
+        TomcatHelper.configureJarScanner(standardContext);
 
-            final ContextTransaction contextTransaction = new ContextTransaction();
-            contextTransaction.setProperty(org.apache.naming.factory.Constants.FACTORY, UserTransactionFactory.class.getName());
-            standardContext.getNamingResources().setTransaction(contextTransaction);
-            startInternal(standardContext);
-        }
+        final ContextTransaction contextTransaction = new ContextTransaction();
+        contextTransaction.setProperty(org.apache.naming.factory.Constants.FACTORY, UserTransactionFactory.class.getName());
+        standardContext.getNamingResources().setTransaction(contextTransaction);
+        startInternal(standardContext);
 
         // clear a bit log for default case
         addMyFacesDefaultParameters(standardContext.getLoader().getClassLoader(), standardContext.getServletContext());
@@ -1103,9 +1120,7 @@ public class TomcatWebAppBuilder impleme
     @SuppressWarnings("unchecked")
     @Override
     public void start(final StandardContext standardContext) {
-        if (!TomcatHelper.isTomcat7()) {
-            startInternal(standardContext);
-        }
+        startInternal(standardContext);
     }
 
     /**
@@ -1220,10 +1235,10 @@ public class TomcatWebAppBuilder impleme
                         classLoader = appModule.getClassLoader();
                     } else {
                         final ClassLoader loader = standardContext.getLoader().getClassLoader();
-                        if (loader instanceof LazyStopWebappClassLoader) {
-                            final LazyStopWebappClassLoader lazyStopWebappClassLoader = (LazyStopWebappClassLoader) loader;
+                        if (loader instanceof TomEEWebappClassLoader) {
+                            final TomEEWebappClassLoader tomEEWebappClassLoader = (TomEEWebappClassLoader) loader;
                             for (final URL url : appModule.getWebModules().iterator().next().getAddedUrls()) {
-                                lazyStopWebappClassLoader.addURL(url);
+                                tomEEWebappClassLoader.addURL(url);
                             }
                         }
                     }
@@ -1515,8 +1530,9 @@ public class TomcatWebAppBuilder impleme
         }
 
         // skip undeployment if restarting
-        final LazyStopWebappClassLoader lazyStopWebappClassLoader = lazyClassLoader(child);
-        if (lazyStopWebappClassLoader != null && lazyStopWebappClassLoader.isRestarting()) {
+        final TomEEWebappClassLoader tomEEWebappClassLoader = lazyClassLoader(
+            org.apache.catalina.Context.class.isInstance(child)? org.apache.catalina.Context.class.cast(child) : null);
+        if (tomEEWebappClassLoader != null && tomEEWebappClassLoader.isRestarting()) {
             return true;
         }
 
@@ -1527,7 +1543,7 @@ public class TomcatWebAppBuilder impleme
         return false;
     }
 
-    private static LazyStopWebappClassLoader lazyClassLoader(final Container child) {
+    private static TomEEWebappClassLoader lazyClassLoader(final org.apache.catalina.Context child) {
         if (child == null) {
             return null;
         }
@@ -1538,11 +1554,11 @@ public class TomcatWebAppBuilder impleme
         }
 
         final ClassLoader old = ((LazyStopLoader) loader).getStopClassLoader();
-        if (old == null || !(old instanceof LazyStopWebappClassLoader)) {
+        if (old == null || !(old instanceof TomEEWebappClassLoader)) {
             return null;
         }
 
-        return (LazyStopWebappClassLoader) old;
+        return (TomEEWebappClassLoader) old;
     }
 
     private JndiEncBuilder getJndiBuilder(final ClassLoader classLoader, final WebAppInfo webAppInfo, final Set<Injection> injections) throws OpenEJBException {
@@ -1596,9 +1612,9 @@ public class TomcatWebAppBuilder impleme
         final ClassLoader originalLoader = thread.getContextClassLoader();
         thread.setContextClassLoader(classLoader);
 
-        final NamingContextListener ncl = getNamingContextListener(standardContext);
+        final NamingContextListener ncl = standardContext.getNamingContextListener();
         final String listenerName = ncl.getName();
-        ContextAccessController.setWritable(listenerName, standardContext);
+        ContextAccessController.setWritable(listenerName, standardContext.getNamingToken());
         try {
             final Context openejbContext = (Context) getContainerSystem().getJNDIContext().lookup("openejb");
             final Context root = (Context) ContextBindings.getClassLoader().lookup("");
@@ -1651,25 +1667,6 @@ public class TomcatWebAppBuilder impleme
             SystemInstance.get().fireEvent(new AfterApplicationCreated(contextInfo.appInfo, webApp));
         }
 
-        if (!TomcatVersion.hasAnnotationProcessingSupport()) {
-            try {
-                final Context compEnv = (Context) ContextBindings.getClassLoader().lookup("comp/env");
-
-                final LegacyAnnotationProcessor annotationProcessor = new LegacyAnnotationProcessor(compEnv);
-
-                standardContext.addContainerListener(new ProcessAnnotatedListenersListener(annotationProcessor));
-
-                for (final Container container : standardContext.findChildren()) {
-                    if (container instanceof Wrapper) {
-                        final Wrapper wrapper = (Wrapper) container;
-                        wrapper.addInstanceListener(new ProcessAnnotatedServletsListener(annotationProcessor));
-                    }
-                }
-            } catch (final NamingException e) {
-                // no-op
-            }
-        }
-
         // owb integration filters
         final WebBeansContext webBeansContext = getWebBeansContext(contextInfo);
         if (webBeansContext != null) {
@@ -1780,20 +1777,8 @@ public class TomcatWebAppBuilder impleme
                         continue;
                     }
 
-                    final FileDirContext altDirContext = new AdditionalDocBase();
-                    altDirContext.setDocBase(trim);
-                    altDirContext.setAllowLinking(standardContext.isAllowLinking());
-                    altDirContext.setAliases(standardContext.getAliases());
-                    altDirContext.setCacheTTL(standardContext.getCacheTTL());
-                    altDirContext.setCacheMaxSize(standardContext.getCacheMaxSize());
-                    altDirContext.setCacheObjectMaxSize(standardContext.getCacheObjectMaxSize());
-                    if (cache != null) {
-                        altDirContext.setCached(Boolean.parseBoolean(cache));
-                    } else {
-                        altDirContext.setCached(standardContext.isCachingAllowed());
-                    }
-
-                    standardContext.addResourcesDirContext(altDirContext);
+                    final WebResourceRoot root = standardContext.getResources();
+                    root.addPreResources(new DirResourceSet(root, "/", trim, "/"));
                 }
             }
         }
@@ -1910,7 +1895,7 @@ public class TomcatWebAppBuilder impleme
             return;
         }
 
-        final LazyStopWebappClassLoader old = lazyClassLoader(standardContext);
+        final TomEEWebappClassLoader old = lazyClassLoader(standardContext);
         if (old != null) { // should always be the case
             TldScanner.forceCompleteClean(old);
             jsfClasses.remove(old);
@@ -2179,7 +2164,7 @@ public class TomcatWebAppBuilder impleme
         logger.debug("context path = " + path);
         webModule.setHost(Contexts.getHostname(standardContext));
         // Add all Tomcat env entries to context so they can be overriden by the env.properties file
-        final NamingResources naming = standardContext.getNamingResources();
+        final NamingResourcesImpl naming = standardContext.getNamingResources();
         for (final ContextEnvironment environment : naming.findEnvironments()) {
             EnvEntry envEntry = webApp.getEnvEntryMap().get(environment.getName());
             if (envEntry == null) {

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java Thu Jul 24 22:40:36 2014
@@ -136,8 +136,6 @@ public class Warmup {
                 "org.apache.tomcat.util.net.AbstractEndpoint",
                 "org.apache.tomcat.util.scan.StandardJarScanner",
                 "org.apache.tomcat.util.threads.ThreadPoolExecutor",
-                "org.apache.tomee.catalina.BackportUtil",
-                "org.apache.tomee.catalina.BackportUtil$1",
                 "org.apache.tomee.loader.TomEEJarScanner",
                 // "org.apache.tomee.catalina.TomcatLoader", // can't be loaded from here
                 "org.apache.webbeans.config.WebBeansFinder",

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/DeployMessage.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/DeployMessage.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/DeployMessage.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/DeployMessage.java Thu Jul 24 22:40:36 2014
@@ -55,4 +55,9 @@ public class DeployMessage extends Clust
     public byte[] getArchive() {
         return archive;
     }
+
+    @Override
+    public String getUniqueId() {
+        return "DEPLOY-" + file;
+    }
 }

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/UndeployMessage.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/UndeployMessage.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/UndeployMessage.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/UndeployMessage.java Thu Jul 24 22:40:36 2014
@@ -28,4 +28,9 @@ public class UndeployMessage extends Clu
     public String getFile() {
         return file;
     }
+
+    @Override
+    public String getUniqueId() {
+        return "UNDEPLOY-" + file;
+    }
 }

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LazyRealm.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LazyRealm.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LazyRealm.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LazyRealm.java Thu Jul 24 22:40:36 2014
@@ -27,9 +27,9 @@ import org.apache.catalina.Realm;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
-import org.apache.catalina.deploy.SecurityConstraint;
 import org.apache.catalina.util.LifecycleBase;
 import org.apache.openejb.config.sys.PropertiesAdapter;
+import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
 import org.apache.tomee.catalina.TomEERuntimeException;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.xbean.recipe.ObjectRecipe;
@@ -52,7 +52,7 @@ public class LazyRealm extends Lifecycle
     private boolean cdi;
 
     private volatile Realm delegate;
-    private Container container;
+    private Context container;
 
     private CreationalContext<Object> creationalContext;
 
@@ -183,16 +183,11 @@ public class LazyRealm extends Lifecycle
         if (delegate != null) {
             instance().setContainer(container);
         } else {
-            this.container = container;
+            this.container = Context.class.cast(container);
         }
     }
 
     @Override
-    public String getInfo() {
-        return instance().getInfo();
-    }
-
-    @Override
     public void addPropertyChangeListener(final PropertyChangeListener listener) {
         instance().addPropertyChangeListener(listener);
     }
@@ -230,7 +225,8 @@ public class LazyRealm extends Lifecycle
 
     @Override
     public boolean hasResourcePermission(final Request request, final Response response,
-                                         final SecurityConstraint[] constraint, final Context context) throws IOException {
+                                         final SecurityConstraint[] constraint,
+                                         final Context context) throws IOException {
         return instance().hasResourcePermission(request, response, constraint, context);
     }
 

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java Thu Jul 24 22:40:36 2014
@@ -22,7 +22,7 @@ import org.apache.catalina.Realm;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
-import org.apache.catalina.deploy.SecurityConstraint;
+import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
 import org.apache.tomee.catalina.TomEERuntimeException;
 import org.ietf.jgss.GSSContext;
 
@@ -120,11 +120,6 @@ public class LowTypedRealm implements Re
     }
 
     @Override
-    public String getInfo() {
-        return info;
-    }
-
-    @Override
     public void addPropertyChangeListener(final PropertyChangeListener listener) {
         // no-op
     }
@@ -182,7 +177,8 @@ public class LowTypedRealm implements Re
 
     @Override
     public boolean hasResourcePermission(final Request request, final Response response,
-                                         final SecurityConstraint[] constraint, final Context context) throws IOException {
+                                         final SecurityConstraint[] constraint,
+                                         final Context context) throws IOException {
         return (Boolean) invoke(hasResourcePermissionMethod, request.getRequest(), response.getResponse(), constraint, context.getPath());
     }
 

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/remote/TomEERemoteWebapp.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/remote/TomEERemoteWebapp.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/remote/TomEERemoteWebapp.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/remote/TomEERemoteWebapp.java Thu Jul 24 22:40:36 2014
@@ -16,7 +16,7 @@
  */
 package org.apache.tomee.catalina.remote;
 
-import org.apache.catalina.Container;
+import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.Loader;
 import org.apache.catalina.Wrapper;
@@ -53,8 +53,6 @@ public class TomEERemoteWebapp extends I
     }
 
     private static class ServerClassLoaderLoader implements Loader {
-        private static final String[] EMPTY_ARRAY = new String[0];
-
         private final TomEERemoteWebapp container;
 
         public ServerClassLoaderLoader(final TomEERemoteWebapp tomEERemoteWebapp) {
@@ -72,12 +70,12 @@ public class TomEERemoteWebapp extends I
         }
 
         @Override
-        public Container getContainer() {
+        public Context getContext() {
             return container;
         }
 
         @Override
-        public void setContainer(final Container container) {
+        public void setContext(final Context context) {
             // no-op
         }
 
@@ -92,11 +90,6 @@ public class TomEERemoteWebapp extends I
         }
 
         @Override
-        public String getInfo() {
-            return ServerClassLoaderLoader.class.getName() + "/1.0";
-        }
-
-        @Override
         public boolean getReloadable() {
             return false;
         }
@@ -112,16 +105,6 @@ public class TomEERemoteWebapp extends I
         }
 
         @Override
-        public void addRepository(final String repository) {
-            // no-op
-        }
-
-        @Override
-        public String[] findRepositories() {
-            return EMPTY_ARRAY;
-        }
-
-        @Override
         public boolean modified() {
             return false;
         }

Added: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/scan/EmptyScanner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/scan/EmptyScanner.java?rev=1613316&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/scan/EmptyScanner.java (added)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/scan/EmptyScanner.java Thu Jul 24 22:40:36 2014
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.catalina.scan;
+
+import org.apache.tomcat.JarScanFilter;
+import org.apache.tomcat.JarScanType;
+import org.apache.tomcat.JarScanner;
+import org.apache.tomcat.JarScannerCallback;
+
+import javax.servlet.ServletContext;
+
+public class EmptyScanner implements JarScanner {
+    private JarScanFilter scanner;
+
+    @Override
+    public void scan(final JarScanType scanType, final ServletContext context,
+                     final JarScannerCallback callback) {
+        // no-op
+    }
+
+    @Override
+    public JarScanFilter getJarScanFilter() {
+        return scanner;
+    }
+
+    @Override
+    public void setJarScanFilter(final JarScanFilter jarScanFilter) {
+        this.scanner = jarScanFilter;
+    }
+}

Modified: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java (original)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java Thu Jul 24 22:40:36 2014
@@ -25,7 +25,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.List;
 import java.util.jar.JarFile;
 import java.util.zip.ZipEntry;
@@ -264,6 +263,7 @@ public class Installer implements Instal
         }
     }
 
+    /*
     private void addJavaeeInEndorsed() {
         final File endorsed = new File(paths.getCatalinaHomeDir(), "endorsed");
         if (!endorsed.mkdir()) {
@@ -285,6 +285,7 @@ public class Installer implements Instal
             }
         }
     }
+    */
 
     private void copyClasses(final File javaEEAPIJar, final File sourceJar, final File destinationJar,
                              final String pattern, final List<String> exceptions) {
@@ -651,7 +652,10 @@ public class Installer implements Instal
             }
         }
         if (newLoggingProps != null) {
-            if (Installers.writeAll(loggingPropsFile, newLoggingProps, alerts)) {
+            if (Installers.writeAll(
+                    loggingPropsFile,
+                    newLoggingProps.replace("java.util.logging.ConsoleHandler", "org.apache.tomee.jul.formatter.AsyncConsoleHandler"),
+                    alerts)) {
                 alerts.addInfo("Append OpenEJB config to logging.properties");
             }
         }

Modified: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java (original)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java Thu Jul 24 22:40:36 2014
@@ -20,7 +20,6 @@ package org.apache.tomee.installer;
 
 import org.apache.openejb.jpa.integration.MakeTxLookup;
 import org.apache.openejb.loader.JarLocation;
-import org.apache.tomee.common.TomcatVersion;
 
 import java.io.File;
 import java.io.FilenameFilter;
@@ -174,11 +173,7 @@ public class Paths implements PathsInter
             return null;
         }
 
-        if (TomcatVersion.v6.isTheVersion() || TomcatVersion.v7.isTheVersion()) {
-            return new File(catalinaHomeDir, "lib");
-        } else {
-            return new File(new File(catalinaHomeDir, "server"), "lib");
-        }
+        return new File(catalinaHomeDir, "lib");
     }
     /**
      * Returns the directory representing {@link #catalinaBaseDir}/conf

Modified: tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java (original)
+++ tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java Thu Jul 24 22:40:36 2014
@@ -20,6 +20,7 @@ import org.apache.catalina.LifecycleExce
 import org.apache.catalina.Server;
 import org.apache.catalina.Service;
 import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.StandardContext;
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.session.StandardManager;
 import org.apache.catalina.startup.CatalinaProperties;
@@ -508,11 +509,11 @@ public class Container {
                 final org.apache.catalina.Container e = service.getContainer();
                 for (final org.apache.catalina.Container h : e.findChildren()) {
                     for (final org.apache.catalina.Container c : h.findChildren()) {
-                        StandardManager m = (StandardManager) c.getManager();
+                        StandardManager m = (StandardManager) StandardContext.class.cast(c).getManager();
                         if (m == null) {
                             m = new StandardManager();
                             m.setSecureRandomClass("org.apache.catalina.startup.FastNonSecureRandom");
-                            c.setManager(m);
+                            StandardContext.class.cast(c).setManager(m);
                         }
                     }
                 }

Modified: tomee/tomee/trunk/tomee/tomee-jaxrs/src/test/java/org/apache/tomee/jaxrs/ReloadingLoaderTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-jaxrs/src/test/java/org/apache/tomee/jaxrs/ReloadingLoaderTest.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-jaxrs/src/test/java/org/apache/tomee/jaxrs/ReloadingLoaderTest.java (original)
+++ tomee/tomee/trunk/tomee/tomee-jaxrs/src/test/java/org/apache/tomee/jaxrs/ReloadingLoaderTest.java Thu Jul 24 22:40:36 2014
@@ -34,7 +34,7 @@ import org.apache.openejb.loader.SystemI
 import org.apache.openejb.server.cxf.rs.CxfRSService;
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.reflection.Reflections;
-import org.apache.tomee.catalina.LazyStopWebappClassLoader;
+import org.apache.tomee.catalina.TomEEWebappClassLoader;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -52,7 +52,7 @@ import static org.junit.Assert.assertSam
 public class ReloadingLoaderTest {
     private AppInfo info;
     private AppContext context;
-    private LazyStopWebappClassLoader loader;
+    private TomEEWebappClassLoader loader;
 
     @BeforeClass
     @AfterClass
@@ -76,7 +76,7 @@ public class ReloadingLoaderTest {
             }
         });
 
-        loader = new LazyStopWebappClassLoader(ParentClassLoaderFinder.Helper.get());
+        loader = new TomEEWebappClassLoader(ParentClassLoaderFinder.Helper.get());
         loader.init();
         loader.start();
 

Modified: tomee/tomee/trunk/tomee/tomee-juli/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-juli/pom.xml Thu Jul 24 22:40:36 2014
@@ -72,9 +72,6 @@
               <filters>
                 <filter>
                   <artifact>org.apache.tomcat:tomcat-juli</artifact>
-                  <excludes>
-                    <exclude>org/apache/juli/logging/LogFactory.class</exclude>
-                  </excludes>
                 </filter>
               </filters>
             </configuration>

Modified: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/AsyncConsoleHandler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/AsyncConsoleHandler.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/AsyncConsoleHandler.java (original)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/AsyncConsoleHandler.java Thu Jul 24 22:40:36 2014
@@ -18,13 +18,45 @@ package org.apache.tomee.jul.formatter;
 
 import org.apache.juli.AsyncFileHandler;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.logging.ConsoleHandler;
+import java.util.logging.Formatter;
 import java.util.logging.LogRecord;
 
 public class AsyncConsoleHandler extends AsyncFileHandler {
-    private final ConsoleHandler delegate = new ConsoleHandler();
+    private final ConsoleHandler delegate = new ConsoleHandler() {{
+        setFormatter(new SingleLineFormatter()); // console -> dev. File uses plain old format
+    }};
 
     protected void publishInternal(final LogRecord record) {
         delegate.publish(record);
     }
+
+    // copy cause of classloading
+    private static class SingleLineFormatter extends Formatter {
+        private static final String SEP = System.getProperty("line.separator", "\n");
+
+        @Override
+        public synchronized String format(final LogRecord record) {
+            final boolean exception = record.getThrown() != null;
+            final StringBuilder sbuf = new StringBuilder();
+            sbuf.append(record.getLevel().getLocalizedName());
+            sbuf.append(" - ");
+            sbuf.append(this.formatMessage(record));
+            sbuf.append(SEP);
+            if (exception) {
+                try {
+                    final StringWriter sw = new StringWriter();
+                    final PrintWriter pw = new PrintWriter(sw);
+                    record.getThrown().printStackTrace(pw);
+                    pw.close();
+                    sbuf.append(sw.toString());
+                } catch (final Exception ex) {
+                    // no-op
+                }
+            }
+            return sbuf.toString();
+        }
+    }
 }

Added: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/JULLogger.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/JULLogger.java?rev=1613316&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/JULLogger.java (added)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/JULLogger.java Thu Jul 24 22:40:36 2014
@@ -0,0 +1,179 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.jul.formatter.log;
+
+import org.apache.juli.logging.Log;
+
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Formatter;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+// DirectJDKLog copy since it is now package scoped
+public class JULLogger implements Log {
+    /** Alternate config reader and console format
+     */
+    private static final String SIMPLE_FMT="java.util.logging.SimpleFormatter";
+    private static final String SIMPLE_CFG="org.apache.juli.JdkLoggerConfig"; //doesn't exist
+    private static final String FORMATTER="org.apache.juli.formatter";
+
+    static {
+        if( System.getProperty("java.util.logging.config.class") == null  &&
+            System.getProperty("java.util.logging.config.file") == null ) {
+            // default configuration - it sucks. Let's override at least the
+            // formatter for the console
+            try {
+                Class.forName(SIMPLE_CFG).newInstance();
+            } catch( Throwable t ) {
+            }
+            try {
+                Formatter fmt=(Formatter)Class.forName(System.getProperty(FORMATTER, SIMPLE_FMT)).newInstance();
+                // it is also possible that the user modified jre/lib/logging.properties -
+                // but that's really stupid in most cases
+                Logger root=Logger.getLogger("");
+                Handler handlers[]=root.getHandlers();
+                for( int i=0; i< handlers.length; i++ ) {
+                    // I only care about console - that's what's used in default config anyway
+                    if( handlers[i] instanceof ConsoleHandler) {
+                        handlers[i].setFormatter(fmt);
+                    }
+                }
+            } catch( Throwable t ) {
+                // maybe it wasn't included - the ugly default will be used.
+            }
+
+        }
+    }
+
+    private final Logger logger;
+
+    public JULLogger(final String name ) {
+        logger= Logger.getLogger(name);
+    }
+
+    @Override
+    public final boolean isErrorEnabled() {
+        return logger.isLoggable(Level.SEVERE);
+    }
+
+    @Override
+    public final boolean isWarnEnabled() {
+        return logger.isLoggable(Level.WARNING);
+    }
+
+    @Override
+    public final boolean isInfoEnabled() {
+        return logger.isLoggable(Level.INFO);
+    }
+
+    @Override
+    public final boolean isDebugEnabled() {
+        return logger.isLoggable(Level.FINE);
+    }
+
+    @Override
+    public final boolean isFatalEnabled() {
+        return logger.isLoggable(Level.SEVERE);
+    }
+
+    @Override
+    public final boolean isTraceEnabled() {
+        return logger.isLoggable(Level.FINER);
+    }
+
+    @Override
+    public final void debug(Object message) {
+        log(Level.FINE, String.valueOf(message), null);
+    }
+
+    @Override
+    public final void debug(Object message, Throwable t) {
+        log(Level.FINE, String.valueOf(message), t);
+    }
+
+    @Override
+    public final void trace(Object message) {
+        log(Level.FINER, String.valueOf(message), null);
+    }
+
+    @Override
+    public final void trace(Object message, Throwable t) {
+        log(Level.FINER, String.valueOf(message), t);
+    }
+
+    @Override
+    public final void info(Object message) {
+        log(Level.INFO, String.valueOf(message), null);
+    }
+
+    @Override
+    public final void info(Object message, Throwable t) {
+        log(Level.INFO, String.valueOf(message), t);
+    }
+
+    @Override
+    public final void warn(Object message) {
+        log(Level.WARNING, String.valueOf(message), null);
+    }
+
+    @Override
+    public final void warn(Object message, Throwable t) {
+        log(Level.WARNING, String.valueOf(message), t);
+    }
+
+    @Override
+    public final void error(Object message) {
+        log(Level.SEVERE, String.valueOf(message), null);
+    }
+
+    @Override
+    public final void error(Object message, Throwable t) {
+        log(Level.SEVERE, String.valueOf(message), t);
+    }
+
+    @Override
+    public final void fatal(Object message) {
+        log(Level.SEVERE, String.valueOf(message), null);
+    }
+
+    @Override
+    public final void fatal(Object message, Throwable t) {
+        log(Level.SEVERE, String.valueOf(message), t);
+    }
+
+    private void log(Level level, String msg, Throwable ex) {
+        if (logger.isLoggable(level)) {
+            // Hack (?) to get the stack trace.
+            Throwable dummyException=new Throwable();
+            StackTraceElement locations[]=dummyException.getStackTrace();
+            // Caller will be the third element
+            String cname = "unknown";
+            String method = "unknown";
+            if (locations != null && locations.length > 3) {
+                StackTraceElement caller = locations[3];
+                cname = caller.getClassName();
+                method = caller.getMethodName();
+            }
+            if (ex==null) {
+                logger.logp(level, cname, method, msg);
+            } else {
+                logger.logp(level, cname, method, msg, ex);
+            }
+        }
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/LoggerFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/LoggerFactory.java?rev=1613316&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/LoggerFactory.java (added)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/LoggerFactory.java Thu Jul 24 22:40:36 2014
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.jul.formatter.log;
+
+import org.apache.juli.logging.Log;
+
+public interface LoggerFactory {
+    Log newInstance(String name);
+}

Added: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/NoopLogger.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/NoopLogger.java?rev=1613316&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/NoopLogger.java (added)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/NoopLogger.java Thu Jul 24 22:40:36 2014
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.jul.formatter.log;
+
+import org.apache.juli.logging.Log;
+
+public class NoopLogger implements Log {
+    public static final NoopLogger INSTANCE = new NoopLogger();
+
+    private NoopLogger() {
+        // no-op
+    }
+
+    @Override
+    public boolean isDebugEnabled() {
+        return false;
+    }
+
+    @Override
+    public boolean isErrorEnabled() {
+        return false;
+    }
+
+    @Override
+    public boolean isFatalEnabled() {
+        return false;
+    }
+
+    @Override
+    public boolean isInfoEnabled() {
+        return false;
+    }
+
+    @Override
+    public boolean isTraceEnabled() {
+        return false;
+    }
+
+    @Override
+    public boolean isWarnEnabled() {
+        return false;
+    }
+
+    @Override
+    public void trace(final Object message) {
+        // no-op
+    }
+
+    @Override
+    public void trace(final Object message, final Throwable t) {
+        // no-op
+    }
+
+    @Override
+    public void debug(final Object message) {
+        // no-op
+    }
+
+    @Override
+    public void debug(final Object message, final Throwable t) {
+        // no-op
+    }
+
+    @Override
+    public void info(final Object message) {
+        // no-op
+    }
+
+    @Override
+    public void info(final Object message, final Throwable t) {
+        // no-op
+    }
+
+    @Override
+    public void warn(final Object message) {
+        // no-op
+    }
+
+    @Override
+    public void warn(final Object message, final Throwable t) {
+        // no-op
+    }
+
+    @Override
+    public void error(final Object message) {
+        // no-op
+    }
+
+    @Override
+    public void error(final Object message, final Throwable t) {
+        // no-op
+    }
+
+    @Override
+    public void fatal(final Object message) {
+        // no-op
+    }
+
+    @Override
+    public void fatal(final Object message, final Throwable t) {
+        // no-op
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java?rev=1613316&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java (added)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java Thu Jul 24 22:40:36 2014
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.jul.formatter.log;
+
+import org.apache.juli.logging.Log;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.concurrent.atomic.AtomicReference;
+
+public class ReloadableLog {
+
+    public static final Class<?>[] INTERFACES = new Class<?>[]{Log.class};
+
+    private ReloadableLog() {
+        // no-op
+    }
+
+    public static Log newLog(final String name, final String factory) {
+        return Log.class.cast(Proxy.newProxyInstance(
+            ReloadableLog.class.getClassLoader(), INTERFACES, new ReloadableLogHandler(factory, name)));
+    }
+
+    private static class ReloadableLogHandler implements InvocationHandler {
+        private static final String LOG4J_IMPL = "org.apache.tomee.loader.log.Log4jLog";
+        private static final String SLF4J_IMPL = "org.apache.tomee.loader.log.Slf4jLog";
+
+        private final String factory;
+        private final String name;
+        private final AtomicReference<Log> delegate = new AtomicReference<>();
+        private volatile boolean done = false;
+
+        public ReloadableLogHandler(final String factory, final String name) {
+            this.factory = factory;
+            this.name = name;
+            initDelegate();
+        }
+
+        private Log initDelegate() {
+            if (done) {
+                return delegate.get();
+            }
+
+            try {
+                switch (factory) {
+                    case "org.apache.openejb.util.Log4jLogStreamFactory":
+                        delegate.set(newInstance(LOG4J_IMPL)); break;
+                    case "org.apache.openejb.util.Slf4jLogStreamFactory":
+                        delegate.set(newInstance(SLF4J_IMPL));
+                        break;
+                    default:
+                        delegate.set(new JULLogger(name));
+                }
+                done = true;
+            } catch (final Throwable the) {
+                if (delegate.get() == null) {
+                    delegate.set(new JULLogger(name));
+                }
+            }
+            return delegate.get();
+        }
+
+        private Log newInstance(final String impl) throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
+            return Log.class.cast(Thread.currentThread()
+                        .getContextClassLoader()
+                        .loadClass(impl)
+                        .getConstructor(String.class)
+                        .newInstance(name));
+        }
+
+        @Override
+        public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
+            try {
+                return method.invoke(initDelegate(), args);
+            } catch (final InvocationTargetException ite) {
+                throw ite.getCause();
+            }
+        }
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java?rev=1613316&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java (added)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java Thu Jul 24 22:40:36 2014
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.jul.formatter.log;
+
+import org.apache.juli.logging.Log;
+
+import java.lang.reflect.Method;
+
+public class TomEELog implements Log {
+    private static volatile boolean initialized = false;
+    private static volatile String loggerClazz;
+    private static volatile boolean defaultLogger;
+
+    private static synchronized void initialize() {
+        if (initialized) {
+            return;
+        }
+
+        if (!Boolean.getBoolean("tomee.skip-tomcat-log")) {
+            final Thread thread = Thread.currentThread();
+            try {
+                final ClassLoader tccl = thread.getContextClassLoader();
+                final Class<?> logger = tccl.loadClass("org.apache.openejb.util.Logger");
+                final Method m = logger.getDeclaredMethod("delegateClass");
+                loggerClazz = (String) m.invoke(null);
+                switch (loggerClazz) {
+                    case "org.apache.openejb.util.Log4jLogStreamFactory":
+                        defaultLogger = false;
+                        initialized = true;
+                        return;
+                    case "org.apache.openejb.util.Slf4jLogStreamFactory":
+                        defaultLogger = false;
+                        initialized = true;
+                        return;
+                    default:
+                        defaultLogger = true;
+                        initialized = true;
+                        return;
+                }
+            } catch (final Throwable th) {
+                // no-op
+            }
+        }
+    }
+
+    private final Log delegate;
+
+    public TomEELog() { // for ServiceLoader
+        delegate = null;
+    }
+
+    public TomEELog(final String name) {
+        initialize();
+        this.delegate = defaultLogger ? new JULLogger(name) : ReloadableLog.newLog(name, loggerClazz);
+    }
+
+    @Override
+    public boolean isDebugEnabled() {
+        return delegate.isDebugEnabled();
+    }
+
+    @Override
+    public boolean isErrorEnabled() {
+        return delegate.isErrorEnabled();
+    }
+
+    @Override
+    public boolean isFatalEnabled() {
+        return delegate.isFatalEnabled();
+    }
+
+    @Override
+    public boolean isInfoEnabled() {
+        return delegate.isInfoEnabled();
+    }
+
+    @Override
+    public boolean isTraceEnabled() {
+        return delegate.isTraceEnabled();
+    }
+
+    @Override
+    public boolean isWarnEnabled() {
+        return delegate.isWarnEnabled();
+    }
+
+    @Override
+    public void trace(final Object message) {
+        delegate.trace(message);
+    }
+
+    @Override
+    public void trace(final Object message, final Throwable t) {
+        delegate.trace(message, t);
+    }
+
+    @Override
+    public void debug(final Object message) {
+        delegate.debug(message);
+    }
+
+    @Override
+    public void debug(final Object message, final Throwable t) {
+        delegate.debug(message, t);
+    }
+
+    @Override
+    public void info(final Object message) {
+        delegate.info(message);
+    }
+
+    @Override
+    public void info(final Object message, final Throwable t) {
+        delegate.info(message, t);
+    }
+
+    @Override
+    public void warn(final Object message) {
+        delegate.warn(message);
+    }
+
+    @Override
+    public void warn(final Object message, final Throwable t) {
+        delegate.warn(message, t);
+    }
+
+    @Override
+    public void error(final Object message) {
+        delegate.error(message);
+    }
+
+    @Override
+    public void error(final Object message, final Throwable t) {
+        delegate.error(message, t);
+    }
+
+    @Override
+    public void fatal(final Object message) {
+        delegate.fatal(message);
+    }
+
+    @Override
+    public void fatal(final Object message, final Throwable t) {
+        delegate.fatal(message, t);
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/services/org.apache.juli.logging.Log
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/services/org.apache.juli.logging.Log?rev=1613316&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/services/org.apache.juli.logging.Log (added)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/services/org.apache.juli.logging.Log Thu Jul 24 22:40:36 2014
@@ -0,0 +1 @@
+org.apache.tomee.jul.formatter.log.TomEELog

Modified: tomee/tomee/trunk/tomee/tomee-loader/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-loader/pom.xml Thu Jul 24 22:40:36 2014
@@ -42,18 +42,6 @@
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-catalina</artifactId>
       <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.tomcat</groupId>
-          <artifactId>tomcat-juli</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.openejb</groupId>
-      <artifactId>tomee-juli</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>

Modified: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java (original)
+++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java Thu Jul 24 22:40:36 2014
@@ -26,7 +26,6 @@ import org.apache.catalina.core.Standard
 import org.apache.catalina.core.StandardEngine;
 import org.apache.catalina.core.StandardHost;
 import org.apache.catalina.core.StandardServer;
-import org.apache.tomee.TomEELogConfigurer;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
@@ -91,7 +90,6 @@ public class OpenEJBListener implements 
                 properties.setProperty("openejb.embedder.source", OpenEJBListener.class.getSimpleName());
                 TomcatEmbedder.embed(properties, StandardServer.class.getClassLoader());
                 listenerInstalled = true;
-                TomEELogConfigurer.configureLogs();
             } else if (logWebappNotFound) {
                 LOGGER.info("tomee webapp not found from the listener, will try from the webapp if exists");
                 logWebappNotFound = false;