Jeremy I think maybe you've misread the spec.
Basically the relay attribute is a red-herring in this case, because I for one have never seen a relay header. The model is actually reasonably simple (excluding the relay attribute for the minute): * headers that are not explicitly marked with a role default to be targeted at the ultimateReceiver * nodes should understand which roles they are playing. Any node must always play the role of next. * any node may process and remove any headers targeted at its roles * it must fault if there are mustUnderstand headers targeted at its roles Actual relaying is a further complexity but I think that is irrelevant. The behaviour required in the previous note-chain is exactly that provided by defining roles as I've described and as the SOAP spec describes. Paul Suppose Axis2 is acting as a On 3/8/07, Jeremy Hughes <[EMAIL PROTECTED]> wrote:
Hi guys ... On 21/02/07, Paul Fremantle <[EMAIL PROTECTED]> wrote: > David, Sanjiva > > Shouldn't we be using the SOAP role model to handle this kind of > situation. It seems to me that what you are describing is a case where > the Axis2 engine is not the ultimateReceiver (see 2.7 Relaying SOAP > Messages http://www.w3.org/TR/soap12-part1/#relaysoapmsg). > > The right way to handle this is to identify what role the SOAP node > that is Axis2 is playing and do mustUnderstand checking based on that > model. > AFAICS, headers which are mustUnderstand="true" can't be relayed (see 2.7.1): The relay attribute information item has no effect on the SOAP processing model when the header block also carries a mustUnderstand attribute information item with a value of "true". (btw: I'm working with David on this) I think embedding Axis2 into a larger system such that the whole of the larger system acts as a single SOAP node would be a useful use case - if for example code running outside of Axis2 would like to 'understand' headers. By separating these out into two nodes, it looks like those headers that are mustUnderstand true / role next can't get relayed to the second node. This is all kinda moot anyway and Sanjiva's suggestion seems to be the best (only?) way of achieving this ... because ... for the piece of the larger system, that Axis2 might be a part of, to do *all* of the mustUnderstand either the Axis2 processed headers must have already been removed (AIUI typically they're not) or the metadata about flagging a header as processed needs to be flowed outside of Axis2 into the 'larger system'. So inserting a handler to flag headers as processed and then doing the real processing in the larger system seems to be the only option. Any other ideas? Thanks, Jeremy --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Paul Fremantle VP/Technology, WSO2 and OASIS WS-RX TC Co-chair http://bloglines.com/blog/paulfremantle [EMAIL PROTECTED] "Oxygenating the Web Service Platform", www.wso2.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]