Author: jlmonteiro
Date: Tue Feb 18 13:13:58 2014
New Revision: 1569305
URL: http://svn.apache.org/r1569305
Log:
Fix from Romain to fix some Tomcat 7.0.52 breaking changes
Modified:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Modified:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java?rev=1569305&r1=1569304&r2=1569305&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
Tue Feb 18 13:13:58 2014
@@ -29,6 +29,8 @@ import org.apache.openejb.util.classload
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
@@ -48,12 +50,35 @@ public class LazyStopWebappClassLoader e
private ClassLoaderConfigurer configurer = null;
private final int hashCode;
+ // ugly but break the whole container in embedded mode at least, tomcat
change had a lot of side effect
+ private void setj2seClassLoader(final ClassLoader loader) {
+ try {
+ final Field field =
WebappClassLoader.class.getDeclaredField("j2seClassLoader");
+
+ if (!field.isAccessible()) {
+ field.setAccessible(true);
+ }
+
+ if (Modifier.isFinal(field.getModifiers())) {
+ final Field modifiersField =
Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ modifiersField.setInt(field, field.getModifiers() &
~Modifier.FINAL);
+ }
+
+ field.set(this, loader);
+ } catch (final Exception e) {
+ LOGGER.warning("Can't set field j2seClassLoader");
+ }
+ }
+
public LazyStopWebappClassLoader() {
+ setj2seClassLoader(getSystemClassLoader());
hashCode = construct();
}
public LazyStopWebappClassLoader(final ClassLoader parent) {
super(parent);
+ setj2seClassLoader(getSystemClassLoader());
hashCode = construct();
}
@@ -80,14 +105,14 @@ public class LazyStopWebappClassLoader e
||
"org.apache.tomee.mojarra.TomEEInjectionProvider".equals(name)) {
// don't load them from system classloader (breaks all in embedded
mode and no sense in other cases)
synchronized (this) {
- final ClassLoader old = system;
- system = NoClassClassLoader.INSTANCE;
+ final ClassLoader old = j2seClassLoader;
+ setj2seClassLoader(NoClassClassLoader.INSTANCE);
final boolean delegate = getDelegate();
setDelegate(false);
try {
return super.loadClass(name);
} finally {
- system = old;
+ setj2seClassLoader(old);
setDelegate(delegate);
}
}
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=1569305&r1=1569304&r2=1569305&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 Feb 18 13:13:58 2014
@@ -16,6 +16,47 @@
*/
package org.apache.tomee.catalina;
+import static org.apache.tomee.catalina.BackportUtil.getNamingContextListener;
+import static org.apache.tomee.catalina.Contexts.warPath;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import javax.ejb.spi.HandleDelegate;
+import javax.el.ELResolver;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NameNotFoundException;
+import javax.naming.NamingException;
+import javax.naming.Reference;
+import javax.naming.StringRefAddr;
+import javax.servlet.ServletContext;
+import javax.servlet.SessionTrackingMode;
+import javax.servlet.jsp.JspApplicationContext;
+import javax.servlet.jsp.JspFactory;
+import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
+
import org.apache.catalina.Cluster;
import org.apache.catalina.Container;
import org.apache.catalina.Engine;
@@ -127,46 +168,6 @@ import org.apache.webbeans.config.WebBea
import org.apache.webbeans.spi.adaptor.ELAdaptor;
import org.omg.CORBA.ORB;
-import javax.ejb.spi.HandleDelegate;
-import javax.el.ELResolver;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NameNotFoundException;
-import javax.naming.NamingException;
-import javax.naming.Reference;
-import javax.naming.StringRefAddr;
-import javax.servlet.ServletContext;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.jsp.JspApplicationContext;
-import javax.servlet.jsp.JspFactory;
-import javax.sql.DataSource;
-import javax.transaction.TransactionManager;
-import javax.transaction.TransactionSynchronizationRegistry;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.concurrent.ConcurrentHashMap;
-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;
-
/**
* Web application builder.
*
@@ -1055,6 +1056,9 @@ public class TomcatWebAppBuilder impleme
// clear a bit log for default case
addMyFacesDefaultParameters(standardContext.getLoader().getClassLoader(),
standardContext.getServletContext());
+
+ // breaks cdi
+
standardContext.setTldValidation(Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.tld.validation",
"false")));
}
/**