You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Andreas Veithen (Commented) (JIRA)" <ji...@apache.org> on 2011/11/29 21:45:40 UTC

[jira] [Commented] (AXIS2-4930) handler class can't find, when using @HandlerChain in jaxws

    [ https://issues.apache.org/jira/browse/AXIS2-4930?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13159532#comment-13159532 ] 

Andreas Veithen commented on AXIS2-4930:
----------------------------------------

Besides the fact that it causes a performance issue and (probably) a memory leak (as described in AXIS2-5203), the change is incorrect and unnecessarily complex.

Basically, it creates a new class loader with the same URLs as the service class loader and with the thread context class loader as parent. This new class loader is meant to load JAX-WS handlers. To see why this is incorrect, assume that you have a service A and a handler B that both use the same class C. If all these classes are in the service archive, then C will be loaded twice because the new class loader doesn't delegate to the service class loader. If A and B attempt to share an instance of C, then this will result in an error.

In addition to that, "merging" the context class loader with the service class loader would only make sense in scenarios where the context class loader is not an ancestor of the service class loader (more precisely where the service class loader doesn't delegate to the context class loader). This is certainly not the case for a WAR deployment because the context class loader will be the application class loader and the service class loader delegates to the application class loader. I don't know any type of deployment where this scenario would occur.

I think that the correct solution for the issue is to either set the service class loader as the context class loader or to make sure that Axis2 uses the service class loader instead of the context class loader when loading a JAX-WS handler.
                
> handler class can't find, when using @HandlerChain in jaxws
> -----------------------------------------------------------
>
>                 Key: AXIS2-4930
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4930
>             Project: Axis2
>          Issue Type: Bug
>          Components: jaxws
>         Environment: Linux, JDK 1.6
>            Reporter: Kasun Weranga Gunathilake
>            Assignee: Isuru Eranga Suriarachchi
>             Fix For: 1.6.0
>
>         Attachments: jaxwshand.jar, patch.txt
>
>
> When I used @HandlerChain in jaxws with handler class define in the handlerchain.xml, It throws an exception by saying handler class can't find. AFAIU the issue comes because of classloader doesn't add the service jar to the class path.
> This is the exception.
> [ERROR] java.lang.ClassNotFoundException: HandlerResolverImpl cannot load the following class Throwable Exception Occured:com.javacoda.jaxws.order.InfoHandler
> org.apache.axis2.AxisFault: java.lang.ClassNotFoundException: HandlerResolverImpl cannot load the following class Throwable Exception Occured:com.javacoda.jaxws.order.InfoHandler
> 	at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
> 	at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:242)
> 	at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
> 	at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
> 	at org.apache.axis2.transport.http.HTTPWorker.service(HTTPWorker.java:296)
> 	at org.apache.axis2.transport.http.server.AxisHttpService.doService(AxisHttpService.java:281)
> 	at org.apache.axis2.transport.http.server.AxisHttpService.handleRequest(AxisHttpService.java:187)
> 	at org.apache.axis2.transport.http.server.HttpServiceProcessor.run(HttpServiceProcessor.java:82)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:619)
> Caused by: javax.xml.ws.WebServiceException: java.lang.ClassNotFoundException: HandlerResolverImpl cannot load the following class Throwable Exception Occured:com.javacoda.jaxws.order.InfoHandler
> 	at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:175)
> 	at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70)
> 	at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:128)
> 	at org.apache.axis2.jaxws.handler.HandlerResolverImpl.resolveHandlers(HandlerResolverImpl.java:359)
> 	at org.apache.axis2.jaxws.handler.HandlerResolverImpl.getHandlerClasses(HandlerResolverImpl.java:143)
> 	at org.apache.axis2.jaxws.handler.HandlerResolverImpl.getHandlerChain(HandlerResolverImpl.java:167)
> 	at org.apache.axis2.jaxws.server.EndpointController.handleRequest(EndpointController.java:240)
> 	at org.apache.axis2.jaxws.server.EndpointController.invoke(EndpointController.java:103)
> 	at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:161)
> 	... 9 more
> Caused by: java.lang.ClassNotFoundException: HandlerResolverImpl cannot load the following class Throwable Exception Occured:com.javacoda.jaxws.order.InfoHandler
> 	at org.apache.axis2.jaxws.spi.handler.BaseHandlerResolver$1.run(BaseHandlerResolver.java:313)
> 	at org.apache.axis2.java.security.AccessController.doPrivileged(AccessController.java:132)
> 	at org.apache.axis2.jaxws.spi.handler.BaseHandlerResolver.forName(BaseHandlerResolver.java:300)
> 	at org.apache.axis2.jaxws.spi.handler.BaseHandlerResolver.loadClass(BaseHandlerResolver.java:113)
> 	at org.apache.axis2.jaxws.handler.HandlerResolverImpl.resolveHandlers(HandlerResolverImpl.java:356)
> 	... 14 more
>  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org