axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guillaume Sauthier <Guillaume.Sauth...@objectweb.org>
Subject Different behavior when invoking ClientSide JAXRPC Handlers and ServerSide JAXRPC Handlers
Date Wed, 01 Dec 2004 12:37:04 GMT
Hi team,

I have noticed that the behavior of JAXRPC handlers is different when 
invoking from client-side compared to behavior when invoking from 
server-side.

1. handler flow is managed in a different way :
a) server : init(), request(), provider.invoke(), response(), destroy()
b) client : init(), request(), destroy(), service.invoke(), init(), 
response(), destroy()
-> Instanciation of the handlers (in a HandlerChain) is made twice in 
client model

2. the code is completely different on both sides :
see SOAPService.invoke(MessageContext) (around line 430) for server side
http://cvs.apache.org/viewcvs.cgi/ws-axis/java/src/org/apache/axis/handlers/soap/SOAPService.java?rev=1.122&view=auto
see AxisClient.invoke() and AxisClient.invokeJAXRPCHandlers()

in server case, we take care of the return value of the HandlerChain, 
use the same handlerChain instance, manage eventual thrown Exceptions, ...
All sort of things that we don't do in client side.
IMO client side JAXRPCHandler usage is too simple :
invoke() calls invokeJAXRPCHandlers() in request flow AND response flow
invokeJAXRPCHandlers() instanciate a new handlerChain at each call, and 
never read return values of handle* (BTW, notice that handlerFault is 
not called in client side !).

Can we refactor axis Client code to looks like more as SOAPService ?

regards
Guillaume

Mime
View raw message