[ https://issues.apache.org/activemq/browse/SM-396?page=all ]
     
Guillaume Nodet resolved SM-396:
--------------------------------

    Fix Version: 3.0-M2
     Resolution: Fixed
      Assign To: Guillaume Nodet

Author: gnodet
Date: Wed Apr 12 11:54:44 2006
New Revision: 393577

URL: http://svn.apache.org/viewcvs?rev=393577&view=rev
Log:
SM-396: classloading issue in servicemix-jsr181 - thread context classloader 
not set to serviceunit classloader
Patch provided by Renaud Bruyeron

Modified:
    
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181XBeanDeployer.java



> 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
>     Assignee: Guillaume Nodet
>      Fix For: 3.0-M2
>  Attachments: fix-jsr181.txt, 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