Leonardo Campanale wrote:
Finally I was able to write a class (handler) able to intercept the call and reroute the message to a final destination.
To do this I wrote the handleRequest where I had to call the service through the To field of the ws-a headers and I had to save the response in some way (in a map)
On the return path toward the client I had to intercept the response message (handleResponse) and I substituted the message with the saved value.
What happens now is that in my handleRequest I forward the message to the desided address, but the call continues also to be sent to the TargetEndpointAddress specified in the client call. As a consequence of this behavior sometimes this second call fails (for example bacause of different signatures between the desired service and the endpoint service ). To face this scenario I had to override also the handleFault method in my handler.
So the problem is now that, on the handleRequest, it would be better to stop the message path on the server and use this handler as a pivot, in order to avoid that the original service is called.
How is it possible?
JAX-RPC says that handleRequest() can return false to short-circuit further processing of the handler chain, as well as prevent dispatching to the target endpoint - see section 12.2.2 of the JAX-RPC 1.1 spec. Unfortunately, looking at org.apache.axis.handlers.JAXRPCHandler, it doesn't look to me as if Axis complies with this part of the spec.
Ian
