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/"));
+ }
+}