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);
             }
         }
     }


Reply via email to