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 18:48:54 UTC
svn commit: r1605135 - 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/ tom...
Author: rmannibucau
Date: Tue Jun 24 16:48:53 2014
New Revision: 1605135
URL: http://svn.apache.org/r1605135
Log:
TOMEE-1255 adding docBases to tomee maven plugin
Added:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/
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
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.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=1605135&r1=1605134&r2=1605135&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 16:48:53 2014
@@ -34,6 +34,7 @@ import org.apache.openejb.config.RemoteS
import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.Zips;
+import org.apache.openejb.util.Join;
import org.apache.openejb.util.OpenEjbVersion;
import org.apache.tomee.util.QuickServerXmlParser;
@@ -257,6 +258,12 @@ public abstract class AbstractTomEEMojo
@Parameter(property = "tomee-plugin.openejb", defaultValue = "false")
protected boolean useOpenEJB;
+ /**
+ * for TomEE and wars only, which docBase to use for this war.
+ */
+ @Parameter
+ protected List<File> docBases;
+
protected File deployedFile = null;
protected RemoteServer server = null;
protected String container = TOM_EE;
@@ -849,6 +856,21 @@ public abstract class AbstractTomEEMojo
strings.add("-Dtomee.noshutdownhook=true");
}
+ if (docBases != null && !docBases.isEmpty()) {
+ if ("war".equals(packaging)) {
+ final Collection<String> paths = new ArrayList<String>(docBases.size());
+ for (final File path : docBases) { // don't use relative paths (toString())
+ paths.add(path.getAbsolutePath());
+ }
+
+ final String appName = destinationName().replace(".war", "");
+ strings.add("-Dtomee." + appName + ".docBases=" + Join.join(",", paths));
+ strings.add("-Dtomee." + appName + ".docBases.cache=false"); // doesn't work for dev if activated
+ } else {
+ getLog().warn("docBases parameter only valid for a war");
+ }
+ }
+
return strings;
}
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=1605135&r1=1605134&r2=1605135&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 16:48:53 2014
@@ -63,6 +63,7 @@ import org.apache.naming.ContextAccessCo
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;
@@ -118,6 +119,7 @@ import org.apache.tomee.catalina.cluster
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.routing.RouterValve;
import org.apache.tomee.catalina.websocket.JavaEEDefaultServerEnpointConfigurator;
import org.apache.tomee.common.LegacyAnnotationProcessor;
@@ -1744,6 +1746,43 @@ public class TomcatWebAppBuilder impleme
currentWebAppInfo.servlets.add(info);
}
}
+
+ addConfiguredDocBases(standardContext, contextInfo);
+ }
+
+ private void addConfiguredDocBases(StandardContext standardContext, ContextInfo contextInfo) {
+ if (contextInfo.appInfo.path != null) { // add external web resources
+ final String webResources = SystemInstance.get().getProperty("tomee." + new File(contextInfo.appInfo.path).getName() + ".docBases", contextInfo.appInfo.properties.getProperty("docBases"));
+ final String cache = SystemInstance.get().getProperty("tomee." + new File(contextInfo.appInfo.path).getName() + ".docBases.cache", contextInfo.appInfo.properties.getProperty("docBases.cache"));
+ if (webResources != null) {
+ for (final String alt : webResources.trim().split(",")) {
+ final String trim = alt.trim();
+ if (trim.isEmpty()) {
+ continue;
+ }
+
+ if (!new File(trim).isDirectory()) {
+ logger.warning("Can't add docBase which are not directory: " + trim);
+ 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);
+ }
+ }
+ }
}
private WebBeansContext getWebBeansContext(final ContextInfo contextInfo) {
Added: 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=1605135&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java (added)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java Tue Jun 24 16:48:53 2014
@@ -0,0 +1,47 @@
+/*
+ * 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.naming.resources.FileDirContext;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
+// a normal FileDirContext just unwrapping tomcat prefix
+// to simulate a normal webapp dir and not a jar one
+//
+// this is close to VirtualDirContext excepted all are bound to the same endpoint (awesome in dev)
+public class AdditionalDocBase extends FileDirContext {
+ private static final String PREFIX = "/META-INF/resources";
+ private static final int PREFIX_LENGTH = PREFIX.length();
+
+ @Override
+ protected Object doLookup(final String name) {
+ if (name.startsWith(PREFIX)) {
+ return super.doLookup(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);
+ }
+}