axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Glen Daniels <>
Subject RE: MustUnderstand faults
Date Fri, 08 Aug 2003 04:26:07 GMT

> The SOAP spec calls for the message to be only processed if it fully
> understands all the mandatory parts. Sounds to me that your service
> should never get called in this case.


This used to work fine, and apparently was broken when dims integrated a large patch on Dec
20, 2002:

There used to be a "SOAPRequestHandler" which would check MUs after all request Handlers had
run but before the pivot point - this change switched it to be a "SOAPResponseHandler" and
to run after the pivot.  This is badness.  I should have looked closer at that patch at the
time, and we should research why Andras did it that way.

There are two ways to get the MU semantic Simon describes to work.  First, you can make sure
to check MUs before doing anything substantive.  Second, you can make sure any work you do
before MU checking is "rollbackable" and ensure that appropriate control flow happens to enable
rolling this stuff back.

While there is some call for handling the "rollback" situation anyway (even for non-MU faults),
I think the "check first" approach is the generally better one, and in fact I think we should
change the way we deal with MUs back to the way it was in a much earlier version of Axis.
 Each Handler keeps a list of which QNames it knows how to process, and the MU check can therefore
be done very quickly before ANY Handlers are called.  This is what the "canHandleBlock(qname)"
API in Handler is for.

We should fix this immediately - I'll volunteer to do so this weekend.  Are people OK with
switching back to the "pre-flight-check" for MU headers (my preferred fix)?


View raw message