You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by Leonardo Campanale <l....@libero.it> on 2005/04/08 09:49:19 UTC

Help about using handlers to route messages

Did you receive  my previous mail?
I did not receive any answer nor the mail was accessible on the web.
Sorry if I'm continuing to submit the problem, but I have no idea if 
there are alternatives to this behavior.
Thanks again


Leonardo Campanale ha scritto:

> Hello everyone.
> I found that if I intentionally throw an AxisFault in my handler. 
> after the processing of addressing headers, the calls chain really 
> stops and the pivot is not called at all.
> But the AxisServlet obviously considers the event as a fault and 
> returns a page error (code 500  SC_INTERNAL_SERVER_ERROR) to the 
> calling client. In this response  page I'm able to substitute the 
> error  message with the desired message, coming from the called 
> service, but I'm not able to change the http headers (unless I rewrite 
> part of AxisServlet dopost).
> So my real concern is about the way to intercept the path toward the 
> server, and avoid the call to the real pivot, or, in other terms, to 
> substitute the real pivot with  my handler (that manages the 
> addressing headers)
> Thanks again
> Leonardo Campanale.
>
>
> Davanum Srinivas ha scritto:
>
>>Ian,
>>
>>there are several tests in axis test harness for testing these
>>scenarios and several test cases in jaxrpc tck as well. so we should
>>be all set...IF you see a problem scenario, can you please refine the
>>axis tests? (test\wsdl\jaxrpchandler**) and open a bug report? I feel
>>all the cases are covered though i don't remember exactly the
>>implementation detail off the top of my head.
>>
>>-- dims
>>
>>
>>On Mon, 14 Mar 2005 18:44:26 -0500, Ian Springer <ip...@apache.org> <ma...@apache.org> wrote:
>>  
>>
>>>Davanum Srinivas wrote:
>>>
>>>    
>>>
>>>>see HandlerChainImpl
>>>>
>>>>-- dims
>>>>
>>>>
>>>>
>>>>      
>>>>
>>>Dims,
>>>
>>>I did see that class. However, looking at JAXRPCHandler, it basically
>>>always creates a HandlerChainImpl that contains only a single handler,
>>>the one specified via the className option in the wsdd. Also,
>>>JAXRPCHandler#invoke() ignores the return values of handleRequest() and
>>>handleResponse(), and JAXRPCHandler#onFault() ignores the return value
>>>of handleFault(). So it looks to me like if one of my JAX-RPC Handler's
>>>handle*() methods returns false, HandlerChainImpl will also return
>>>false, but JAXRPCHandler never propogates this to the rest of the Axis
>>>handler chain. So the request will still get passed through any other
>>>Axis handlers, including other JAX-RPC handlers, that are configured in
>>>the wsdd. Or am I missing something?
>>>
>>>Ian
>>>
>>>    
>>>
>>>>--- Ian Springer <ip...@apache.org> <ma...@apache.org> wrote:
>>>>
>>>>
>>>>      
>>>>
>>>>>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
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>        
>>>>>
>>>>Davanum Srinivas - http://webservices.apache.org/~dims/ <http://webservices.apache.org/%7Edims/>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>      
>>>>
>>>    
>>>
>>  
>>
>