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 2012/08/24 16:34:42 UTC

svn commit: r1376945 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java

Author: rmannibucau
Date: Fri Aug 24 14:34:42 2012
New Revision: 1376945

URL: http://svn.apache.org/viewvc?rev=1376945&view=rev
Log:
using TempClassLoader as TCCL at deploy time otherwise classcastexception can happen

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1376945&r1=1376944&r2=1376945&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Fri Aug 24 14:34:42 2012
@@ -16,8 +16,6 @@
  */
 package org.apache.openejb.config;
 
-import javax.ws.rs.ApplicationPath;
-import javax.ws.rs.ext.Provider;
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.api.LocalClient;
@@ -194,9 +192,11 @@ import javax.resource.spi.ConnectionDefi
 import javax.resource.spi.Connector;
 import javax.resource.spi.SecurityPermission;
 import javax.resource.spi.work.WorkContext;
+import javax.ws.rs.ApplicationPath;
 import javax.ws.rs.Path;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Context;
+import javax.ws.rs.ext.Provider;
 import javax.xml.ws.Service;
 import javax.xml.ws.WebServiceProvider;
 import javax.xml.ws.WebServiceRef;
@@ -316,6 +316,10 @@ public class AnnotationDeployer implemen
     private final DynamicDeployer preJndiBindingDeployer;
 
     // TODO: explode it in Configuration factory to be able to add other deployer easily between phases
+    public AnnotationDeployer() {
+        this(null);
+    }
+
     public AnnotationDeployer(final DynamicDeployer postDiscoverDeployer) {
         discoverAnnotatedBeans = new DiscoverAnnotatedBeans();
         processAnnotatedBeans = new ProcessAnnotatedBeans();
@@ -327,11 +331,15 @@ public class AnnotationDeployer implemen
     }
 
     public AppModule deploy(AppModule appModule) throws OpenEJBException {
+        final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(appModule.getClassLoader());
         setModule(appModule);
         try {
             appModule = discoverAnnotatedBeans.deploy(appModule);
             appModule = envEntriesPropertiesDeployer.deploy(appModule);
-            appModule = preJndiBindingDeployer.deploy(appModule);
+            if (preJndiBindingDeployer != null) {
+                appModule = preJndiBindingDeployer.deploy(appModule);
+            }
             appModule = mergeWebappJndiContext.deploy(appModule);
             appModule = builtInEnvironmentEntries.deploy(appModule);
             appModule = processAnnotatedBeans.deploy(appModule);
@@ -339,6 +347,7 @@ public class AnnotationDeployer implemen
             appModule = mBeanDeployer.deploy(appModule);
             return appModule;
         } finally {
+            Thread.currentThread().setContextClassLoader(classLoader);
             removeModule();
         }
     }
@@ -351,12 +360,15 @@ public class AnnotationDeployer implemen
 
     public WebModule deploy(WebModule webModule) throws OpenEJBException {
         setModule(webModule);
+        final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(webModule.getClassLoader());
         try {
             webModule = discoverAnnotatedBeans.deploy(webModule);
             webModule = envEntriesPropertiesDeployer.deploy(webModule);
             webModule = processAnnotatedBeans.deploy(webModule);
             return webModule;
         } finally {
+            Thread.currentThread().setContextClassLoader(classLoader);
             removeModule();
         }
     }