Author: rmannibucau
Date: Sun May 6 16:39:08 2012
New Revision: 1334683
URL: http://svn.apache.org/viewvc?rev=1334683&view=rev
Log:
using standardclassloader when deploying a webapp whatever the current
classlaoder is
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1334683&r1=1334682&r2=1334683&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Sun May 6 16:39:08 2012
@@ -36,6 +36,7 @@ import org.apache.catalina.deploy.Contex
import org.apache.catalina.deploy.ContextResourceLink;
import org.apache.catalina.deploy.ContextTransaction;
import org.apache.catalina.deploy.NamingResources;
+import org.apache.catalina.loader.WebappClassLoader;
import org.apache.catalina.startup.Constants;
import org.apache.catalina.startup.ContextConfig;
import org.apache.catalina.startup.HostConfig;
@@ -753,8 +754,22 @@ public class TomcatWebAppBuilder impleme
Context openejbContext = getContainerSystem().getJNDIContext();
openejbContext = (Context) openejbContext.lookup("openejb");
- final Context root = (Context)
ContextBindings.getClassLoader().lookup("");
- final Context comp = (Context)
ContextBindings.getClassLoader().lookup("comp"); // usually fails
+ final ClassLoader tccl =
Thread.currentThread().getContextClassLoader();
+ // normal case = startup case use standardclassloader
+ // so simply reproduce it even is a method is called from another
context.
+ // that said this code (try) shouldn't be useful anymore for
tomcat 7
+ if (tccl instanceof WebappClassLoader) {
+ Thread.currentThread().setContextClassLoader(tccl.getParent());
+ }
+
+ final Context root;
+ final Context comp;
+ try {
+ root = (Context) ContextBindings.getClassLoader().lookup("");
+ comp = (Context)
ContextBindings.getClassLoader().lookup("comp"); // usually fails
+ } finally {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
// Context root = ncl.getNamingContext();
// Context comp = (Context) root.lookup("comp");