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/10/18 10:20:40 UTC

svn commit: r1399549 - /openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java

Author: rmannibucau
Date: Thu Oct 18 08:20:39 2012
New Revision: 1399549

URL: http://svn.apache.org/viewvc?rev=1399549&view=rev
Log:
TOMEE-480 deploy SOAP webservices using the classloader of the app/webapp containing it

Modified:
    openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java

Modified: openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=1399549&r1=1399548&r2=1399549&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java (original)
+++ openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Thu Oct 18 08:20:39 2012
@@ -247,6 +247,8 @@ public abstract class WsService implemen
                         PortInfo portInfo = ports.get(bean.ejbName);
                         if (portInfo == null) continue;
 
+                        final ClassLoader old = Thread.currentThread().getContextClassLoader();
+                        Thread.currentThread().setContextClassLoader(beanContext.getClassLoader());
                         try {
                             PortData port = WsBuilder.toPortData(portInfo, beanContext.getInjections(), moduleBaseUrl, beanContext.getClassLoader());
 
@@ -291,6 +293,8 @@ public abstract class WsService implemen
                             }
                         } catch (Throwable e) {
                             logger.error("Error deploying JAX-WS Web Service for EJB " + beanContext.getDeploymentID(), e);
+                        } finally {
+                            Thread.currentThread().setContextClassLoader(old);
                         }
                     }
                 }
@@ -339,8 +343,10 @@ public abstract class WsService implemen
                 continue;
             }
 
+            final ClassLoader old = Thread.currentThread().getContextClassLoader();
+            final ClassLoader classLoader = webContext.getClassLoader();
+            Thread.currentThread().setContextClassLoader(classLoader);
             try {
-                ClassLoader classLoader = webContext.getClassLoader();
                 Collection<Injection> injections = webContext.getInjections();
                 Context context = webContext.getJndiEnc();
                 Class target = classLoader.loadClass(servlet.servletClass);
@@ -369,6 +375,8 @@ public abstract class WsService implemen
                 }
             } catch (Throwable e) {
                 logger.error("Error deploying CXF webservice for servlet " + portInfo.serviceLink, e);
+            } finally {
+                Thread.currentThread().setContextClassLoader(old);
             }
         }
     }