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 20:49:35 UTC
svn commit: r1613491 - 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-juli/src/main/java/org/apache/tomee/jul/formatter/log/
Author: rmannibucau
Date: Fri Jul 25 18:49:35 2014
New Revision: 1613491
URL: http://svn.apache.org/r1613491
Log:
making dynamic development working back after tomcat 8 migration
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/OpenEJBContextConfig.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/JULLogger.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.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=1613491&r1=1613490&r2=1613491&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 Fri Jul 25 18:49:35 2014
@@ -117,6 +117,9 @@ public abstract class AbstractTomEEMojo
@Parameter(property = "tomee-plugin.apache-repos", defaultValue = "snapshots")
protected String apacheRepos;
+ /**
+ * tomee classifier to use (webprofile or plus)
+ */
@Parameter(property = "tomee-plugin.classifier", defaultValue = "webprofile")
protected String tomeeClassifier;
@@ -217,6 +220,12 @@ public abstract class AbstractTomEEMojo
protected boolean forceReloadable;
/**
+ * force webapp to be reloadable
+ */
+ @Parameter(property = "tomee-plugin.jsp-development", defaultValue = "true")
+ protected boolean forceJspDevelopment;
+
+ /**
* supported formats:
* --> groupId:artifactId:version...
* --> unzip:groupId:artifactId:version...
@@ -288,12 +297,6 @@ public abstract class AbstractTomEEMojo
@Parameter
protected List<File> externalRepositories;
- /**
- * 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 = false;
-
protected File deployedFile = null;
protected RemoteServer server = null;
protected String container = TOM_EE;
@@ -924,8 +927,9 @@ public abstract class AbstractTomEEMojo
}
}
- if (skipWarResources) {
- strings.add("-Dtomee.skip-war-resources=" + skipWarResources);
+ if (forceJspDevelopment) {
+ getLog().info("TomEE will run in development mode");
+ strings.add("-Dtomee.jsp-development=true");
}
return strings;
@@ -940,10 +944,6 @@ public abstract class AbstractTomEEMojo
getLog().info("Forcing forceReloadable=true to be able to type 'reload[ENTER]' when classes are updated");
forceReloadable = true;
}
- if (!skipWarResources) {
- getLog().info("Forcing skipWarResources=true to be able to refresh resources with F5");
- skipWarResources = true;
- }
if (docBases == null) {
docBases = new ArrayList<File>();
}
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java?rev=1613491&r1=1613490&r2=1613491&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java Fri Jul 25 18:49:35 2014
@@ -43,6 +43,7 @@ import org.apache.openejb.util.Logger;
import org.apache.openejb.util.URLs;
import org.apache.tomcat.util.bcel.classfile.AnnotationEntry;
import org.apache.tomcat.util.bcel.classfile.ElementValuePair;
+import org.apache.tomcat.util.bcel.classfile.JavaClass;
import org.apache.tomcat.util.descriptor.web.ContextResource;
import org.apache.tomcat.util.descriptor.web.JspPropertyGroup;
import org.apache.tomcat.util.descriptor.web.WebXml;
@@ -377,6 +378,13 @@ public class OpenEJBContextConfig extend
return;
}
+ if ("true".equalsIgnoreCase(SystemInstance.get().getProperty("tomee.jsp-development", "true"))) {
+ final Wrapper jsp = Wrapper.class.cast(context.findChild("jsp"));
+ if (jsp != null) {
+ jsp.addInitParameter("development", "true");
+ }
+ }
+
final ClassLoader classLoader = context.getLoader().getClassLoader();
// add myfaces auto-initializer if mojarra is not present
@@ -509,6 +517,11 @@ public class OpenEJBContextConfig extend
}
@Override
+ protected void checkHandlesTypes(final JavaClass javaClass) {
+ // no-op
+ }
+
+ @Override
protected void processAnnotationsFile(final File file, final WebXml fragment, final boolean handlesTypesOnly) {
try {
if (NewLoaderLogic.skip(file.toURI().toURL())) {
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java?rev=1613491&r1=1613490&r2=1613491&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java Fri Jul 25 18:49:35 2014
@@ -18,14 +18,11 @@ package org.apache.tomee.catalina;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
-import org.apache.catalina.LifecycleState;
+import org.apache.catalina.WebResource;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.WebResourceSet;
import org.apache.catalina.loader.WebappClassLoader;
import org.apache.catalina.webresources.DirResourceSet;
-import org.apache.catalina.webresources.FileResourceSet;
-import org.apache.catalina.webresources.JarResourceSet;
-import org.apache.catalina.webresources.JarWarResourceSet;
import org.apache.catalina.webresources.StandardRoot;
import org.apache.openejb.OpenEJB;
import org.apache.openejb.classloader.ClassLoaderConfigurer;
@@ -53,7 +50,6 @@ import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
-import java.util.Locale;
public class TomEEWebappClassLoader extends WebappClassLoader {
private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TomEEWebappClassLoader.class.getName());
@@ -208,16 +204,15 @@ public class TomEEWebappClassLoader exte
}
if (CONTEXT.get() != null) {
additionalRepos = new LinkedList<>();
- final String root = CONTEXT.get().getServletContext().getRealPath("/");
- if (root != null) {
- final String externalRepositories = SystemInstance.get().getProperty("tomee." + new File(root).getName() + ".externalRepositories");
- if (externalRepositories != null) {
- for (final String additional : externalRepositories.split(",")) {
- final String trim = additional.trim();
- if (!trim.isEmpty()) {
- final File file = new File(trim);
- additionalRepos.add(file);
- }
+ final String contextPath = CONTEXT.get().getServletContext().getContextPath();
+ final String name = contextPath.isEmpty() ? "ROOT" : contextPath.substring(1);
+ final String externalRepositories = SystemInstance.get().getProperty("tomee." + name + ".externalRepositories");
+ if (externalRepositories != null) {
+ for (final String additional : externalRepositories.split(",")) {
+ final String trim = additional.trim();
+ if (!trim.isEmpty()) {
+ final File file = new File(trim);
+ additionalRepos.add(file);
}
}
}
@@ -237,12 +232,11 @@ public class TomEEWebappClassLoader exte
initAdditionalRepos();
if (additionalRepos != null) {
for (final File f : additionalRepos) {
- try { // not addURL to look here first
- super.addURL(f.toURI().toURL());
- } catch (final MalformedURLException e) {
- LOGGER.error(e.getMessage());
- }
+ final DirResourceSet webResourceSet = new PremptiveDirResourceSet(resources, "/", f.getAbsolutePath(), "/");
+ webResourceSet.setClassLoaderOnly(true);
+ resources.addPreResources(webResourceSet);
}
+ resources.setCachingAllowed(false);
}
// add configurer enrichments
@@ -359,4 +353,17 @@ public class TomEEWebappClassLoader exte
throw new ClassNotFoundException();
}
}
+
+ private static final class PremptiveDirResourceSet extends DirResourceSet {
+ private static final String WEB_INF_CLASSES = "/WEB-INF/classes/";
+
+ public PremptiveDirResourceSet(final WebResourceRoot resources, final String s, final String absolutePath, final String s1) {
+ super(resources, s, absolutePath, s1);
+ }
+
+ @Override
+ public WebResource getResource(final String path) {
+ return super.getResource(path.startsWith(WEB_INF_CLASSES)? path.substring(WEB_INF_CLASSES.length() - 1) : path);
+ }
+ }
}
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=1613491&r1=1613490&r2=1613491&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 Fri Jul 25 18:49:35 2014
@@ -32,7 +32,6 @@ 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;
import org.apache.catalina.core.StandardContext;
@@ -104,7 +103,6 @@ import org.apache.openejb.spi.ContainerS
import org.apache.openejb.util.LogCategory;
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;
@@ -122,8 +120,6 @@ 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.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.UserTransactionFactory;
import org.apache.tomee.loader.TomcatHelper;
@@ -1007,35 +1003,6 @@ 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"))) {
- /* 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/"));
- }
- */
- }
}
private void initContextLoader(final StandardContext standardContext) {
@@ -1737,8 +1704,10 @@ public class TomcatWebAppBuilder impleme
private void addConfiguredDocBases(final StandardContext standardContext, final 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"));
+ final String contextPath = standardContext.getServletContext().getContextPath();
+ final String name = contextPath.isEmpty() ? "ROOT" : contextPath.substring(1);
+ final String webResources = SystemInstance.get().getProperty("tomee." + name + ".docBases", contextInfo.appInfo.properties.getProperty("docBases"));
+ final String cache = SystemInstance.get().getProperty("tomee." + name + ".docBases.cache", contextInfo.appInfo.properties.getProperty("docBases.cache"));
if (webResources != null) {
for (final String alt : webResources.trim().split(",")) {
final String trim = alt.trim();
Modified: 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=1613491&r1=1613490&r2=1613491&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/JULLogger.java (original)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/JULLogger.java Fri Jul 25 18:49:35 2014
@@ -47,7 +47,7 @@ public class JULLogger implements Log {
// it is also possible that the user modified jre/lib/logging.properties -
// but that's really stupid in most cases
final Logger root=Logger.getLogger("");
- final Handler handlers[]=root.getHandlers();
+ final 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) {
@@ -165,7 +165,7 @@ public class JULLogger implements Log {
String cname = "unknown";
String method = "unknown";
if (locations != null && locations.length > 3) {
- StackTraceElement caller = locations[3];
+ final StackTraceElement caller = locations[3];
cname = caller.getClassName();
method = caller.getMethodName();
}
Modified: 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=1613491&r1=1613490&r2=1613491&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java (original)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java Fri Jul 25 18:49:35 2014
@@ -24,7 +24,7 @@ import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.concurrent.atomic.AtomicReference;
-public class ReloadableLog {
+public final class ReloadableLog {
public static final Class<?>[] INTERFACES = new Class<?>[]{Log.class};
Modified: 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=1613491&r1=1613490&r2=1613491&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java (original)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java Fri Jul 25 18:49:35 2014
@@ -21,7 +21,7 @@ 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 boolean initialized;
private static volatile String loggerClazz;
private static volatile boolean defaultLogger;