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/06/24 21:31:59 UTC

svn commit: r1605161 - in /tomee/tomee/trunk: maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/ tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/reso...

Author: rmannibucau
Date: Tue Jun 24 19:31:58 2014
New Revision: 1605161

URL: http://svn.apache.org/r1605161
Log:
TOMEE-1256 basic skipWarResources to be able to get hot reloading directly when using docBases

Added:
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
Modified:
    tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.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/TomcatWebAppBuilder.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java

Modified: tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1605161&r1=1605160&r2=1605161&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java (original)
+++ tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java Tue Jun 24 19:31:58 2014
@@ -264,6 +264,12 @@ public abstract class AbstractTomEEMojo 
     @Parameter
     protected List<File> docBases;
 
+    /**
+     * when you set docBases to src/main/webapp setting it to true will allow hot refresh.
+     */
+    @Parameter(property = "tomee-plugin.skipWarResources", defaultValue = "false")
+    protected boolean skipWarResources;
+
     protected File deployedFile = null;
     protected RemoteServer server = null;
     protected String container = TOM_EE;
@@ -871,6 +877,10 @@ public abstract class AbstractTomEEMojo 
             }
         }
 
+        if (skipWarResources) {
+            strings.add("-Dtomee.skip-war-resources=" + skipWarResources);
+        }
+
         return strings;
     }
 

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=1605161&r1=1605160&r2=1605161&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 Tue Jun 24 19:31:58 2014
@@ -104,6 +104,8 @@ public class GlobalListenerSupport imple
                 contextListener.init(standardContext);
             } else if (Lifecycle.BEFORE_START_EVENT.equals(type)) {
                 contextListener.beforeStart(standardContext);
+            } 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");

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=1605161&r1=1605160&r2=1605161&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 Tue Jun 24 19:31:58 2014
@@ -120,6 +120,7 @@ import org.apache.tomee.catalina.cluster
 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;
@@ -1027,6 +1028,13 @@ public class TomcatWebAppBuilder impleme
                 standardContext.addFilterMapBefore(filterMap);
             }
         }
+
+        // can only be done until here (before_start)
+        if (Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.skip-war-resources", "false"))) {
+            final EmptyDirContext resources = new EmptyDirContext(standardContext);
+            standardContext.setResources(resources);
+            standardContext.setCachingAllowed(resources.isCached());
+        }
     }
 
     private void initContextLoader(final StandardContext standardContext) {

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java?rev=1605161&r1=1605160&r2=1605161&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java Tue Jun 24 19:31:58 2014
@@ -18,8 +18,7 @@ package org.apache.tomee.catalina.naming
 
 import org.apache.naming.resources.FileDirContext;
 
-import javax.naming.NamingException;
-import javax.naming.directory.Attributes;
+import java.io.File;
 
 // a normal FileDirContext just unwrapping tomcat prefix
 // to simulate a normal webapp dir and not a jar one
@@ -30,18 +29,10 @@ public class AdditionalDocBase extends F
     private static final int PREFIX_LENGTH = PREFIX.length();
 
     @Override
-    protected Object doLookup(final String name) {
+    protected File file(final String name) {
         if (name.startsWith(PREFIX)) {
-            return super.doLookup(name.substring(PREFIX_LENGTH));
+            return super.file(name.substring(PREFIX_LENGTH));
         }
-        return super.doLookup(name);
-    }
-
-    @Override
-    protected Attributes doGetAttributes(final String name, final String[] attrIds) throws NamingException {
-        if (name.startsWith(PREFIX)) {
-            return super.doGetAttributes(name.substring(PREFIX_LENGTH), attrIds);
-        }
-        return super.doGetAttributes(name, attrIds);
+        return super.file(name);
     }
 }

Added: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java?rev=1605161&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java (added)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java Tue Jun 24 19:31:58 2014
@@ -0,0 +1,58 @@
+/*
+ * 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.naming.resources;
+
+import org.apache.catalina.core.StandardContext;
+import org.apache.naming.resources.FileDirContext;
+
+import java.io.File;
+
+// we need a FileDirContext (so doesn't work with not exploded wars) for boot time
+// note lifecycle is a quick one mainly used internally, other listeners are not intended to be used
+public class EmptyDirContext extends FileDirContext {
+    private final StandardContext context;
+
+    public EmptyDirContext(final StandardContext standardContext) {
+        this.context = standardContext;
+    }
+
+    @Override
+    public boolean isCached() {
+        return false;
+    }
+
+    @Override
+    public void setCached(final boolean cached) {
+        // no-op
+    }
+
+    @Override
+    protected File file(final String name) {
+        if (shouldLookup(name)) {
+            return super.file(name);
+        }
+        return null;
+    }
+
+    private static boolean shouldLookup(final String name) {
+        return name != null
+                && (
+                name.startsWith("/WEB-INF/classes") || name.startsWith("WEB-INF/classes")
+                || name.startsWith("/WEB-INF/lib") || name.startsWith("WEB-INF/lib")
+                || name.startsWith("/META-INF/"));
+    }
+}