classloading issue in servicemix-jsr181 - thread context classloader not set to 
serviceunit classloader
-------------------------------------------------------------------------------------------------------

         Key: SM-396
         URL: https://issues.apache.org/activemq/browse/SM-396
     Project: ServiceMix
        Type: Bug

  Components: servicemix-jsr181  
    Versions: incubation    
    Reporter: Renaud Bruyeron
 Attachments: patch.txt


the registerService() method in Jsr181Endpoint is running with the servicemix 
classloader as the thread context loader, instead of the serviceunit 
classloader.
This creates problems when xfire tries to load interface classes referred to by 
the @WebService(endpointInterface="...") annotation on the implementation 
class. These classes are loadable via the serviceunit classloader, but not via 
the main classloader.

This is what I see during deployment of the soap-binding example:

                                        <loc-message>Couldn't find endpoint 
interface soap.AnnotatedSimpleService. Nested exception is 
java.lang.ClassNotFoundException: soap.AnnotatedSimpleService</loc-message>
                                        
<stack-trace><![CDATA[org.codehaus.xfire.annotations.AnnotationException: 
Couldn't find endpoint interface soap.AnnotatedSimpleService. Nested exception 
is java.lang.ClassNotFoundException: soap.AnnotatedSimpleService
java.lang.ClassNotFoundException: soap.AnnotatedSimpleService
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at 
org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
        at 
org.codehaus.classworlds.DefaultClassRealm.loadClassDirect(DefaultClassRealm.java:412)
        at 
org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:376)
        at 
org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at 
org.codehaus.xfire.util.ClassLoaderUtils.loadClass2(ClassLoaderUtils.java:123)
        at 
org.codehaus.xfire.util.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:104)
        at 
org.codehaus.xfire.annotations.AnnotationServiceFactory.loadClass(AnnotationServiceFactory.java:211)
        at 
org.codehaus.xfire.annotations.AnnotationServiceFactory.create(AnnotationServiceFactory.java:110)
        at 
org.apache.servicemix.jsr181.Jsr181Endpoint.registerService(Jsr181Endpoint.java:254)
        at 
org.apache.servicemix.jsr181.Jsr181XBeanDeployer.validate(Jsr181XBeanDeployer.java:39)
        at 
org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(AbstractXBeanDeployer.java:102)
        at 
org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseServiceUnitManager.java:87)
        at 
org.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUnitManager.java:68)
        at 
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:526)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:236)
        at 
org.apache.servicemix.jbi.framework.AutoDeploymentService$2.run(AutoDeploymentService.java:507)
        at 
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown 
Source)
        at java.lang.Thread.run(Thread.java:595)
]]>

If I replace the TCL with ((XBeanServiceUnit) 
getServiceUnit()).getConfigurationClassLoader() right before the call to 
factory.create(serviceClass, ...) then all is well.

The patch attached modifies the soap-binding example to deploy a 
jsr181-annotated service as well. This triggers the bug.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to