Classification: UNCLASSIFIED
Caveats: NONE

> 
> >
> > > For case 3, will afterInvoke will be called with the response
> > > MessageContext that contains the response SOAP message? If so, I
> > would
> > > like your proposed workaround/fix for case 3 to be included if
> > possible.
> > > It'll give us a compatible Fault handling with other services
> > > (non-Tuscany). It'll also enable auditing when Fault occurs.
> > >
> > That depends on how Axis2 behaves when it throws an Axisfault from
> > operationClient.execute().  Tuscany could do the following after it
> > catches AxisFault, as it does in the non-AxisFault case:
> >
> > MessageContext responseMC =
> >
>
operationClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)
> > ;
> > for ( PolicyHandler policyHandler : policyHandlerList ) {
> >      policyHandler.afterInvoke(msg, responseMC, operationClient);
> > }
> >
> > This will do what you want if Axis2 puts the response SOAP message
in
> > the response MessageContext before it throws the AxisFault.  It
won't
> > do what you want if Axis2 just throws the AxisFault and doesn't set
> up
> > the response MessageContext.
> >
> 
> Maybe I should take a look at the context in the debugger before we do
> anything.
> 

Hi, Simon,

I did try what you described here and it worked - afterInvoke is called
with respnseMC that contains the fault SOAP message. So it's doable.
Here's the code snippet.

        try {
            AccessController.doPrivileged(new
PrivilegedExceptionAction<Object>() {
                public Object run() throws AxisFault {
                    operationClient.execute(true);
                    return null;
                }
            });
        } catch (PrivilegedActionException e) {
                MessageContext responseMC = 
        
operationClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
        
                for ( PolicyHandler policyHandler : policyHandlerList )
{
                policyHandler.afterInvoke(msg, responseMC,
operationClient);
                }            
                operationClient.complete(requestMC);
            throw (AxisFault)e.getException();
        }

Thanks,
Gang 

Classification: UNCLASSIFIED
Caveats: NONE


Reply via email to