axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Veithen (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AXIS2-4930) handler class can't find, when using @HandlerChain in jaxws
Date Tue, 29 Nov 2011 20:45:40 GMT

    [ 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


Mime
View raw message