- From: <noah_mendelsohn@us.ibm.com>
- Date: Fri, 12 Nov 2004 13:42:04 -0500
- To: Hugo Haas <hugo@w3.org>
- Cc: www-ws-desc@w3.org, xml-dist-app@w3.org
- Message-ID: <OF092DA4B6.2D02A36A-ON85256F4A.0064D027@lotus.com>
Hugo Haas asks: > If the HTTP binding is used with the SOAP > Request-Response MEP, can the response _not_ be > sent in the HTTP response message body, e.g. > because the SOAP request was using an addressing > extension to redirect the SOAP response? Speaking just for myself, I think we have to distinguish the following two cases: 1) There is no header in the message to signal the change in response handling In this case, I think the Recommendation is clear. Features, including implementations of MEPs by bindings, can be introduced either by processing an understood header or by the specification of the transport binding. In this case, neither applies in my opinion. The HTTP binding says that the HTTP response Entity body contains [1]: "SOAP message serialized according to the rules for carrying SOAP messages in the media type given by the Content-Type header field.". I agree that this should have been clearer in verifying that the SOAP message in question is the only one it could coherently be per the Request/Response MEP, I.e. the SOAP-level response. 2) There is a header in the message to signal the change. The header is understood and processed by the ultimate receiver. This case is a little more subtle. My reading is that an understood header can change almost anything in SOAP's rules, providing the specification for a header says it does. Doesn't make it a good idea, but technically legal I think. So, from that point of view you could implement a request header signalling the change in response mapping that you propose. However, I think it's important to realize that in this case you are more or less overtly changing the interoperability contract established for the HTTP binding described in option 1. You are in that sense using a header to say that you are not in fact using that base binding as specified. Indeed, if for some reason the requesting node was unaware of the trickery, it would indeed be confused by the lack of a proper SOAP response. Certainly SOAP intermediaries might be confused as well So, any header should probably be explicitly addressed to "next", probably mustUnderstand, and have a specification that requires re-insertion at each node. That forces each intermediary to be aware of what you're doing. Otherwise, you run the risk that intermediaries would (correctly) expect the SOAP response in the HTTP response (though I admit that use of intermediaries with HTTP is murky at this point for other reasons. Furthermore, if you did try to use such a header, I would strongly urge you to write it's spec as an alteration to the HTTP binding spec, indicating how the semantics of the Request/Response MEP are mapped to your new transport conventions. In other words: who gets to generate SOAP faults, how are they reflected back to the sender, etc. You should also talk about the intended implementation of intermediaries. Another consideration. If you do send back both an initial SOAP response in the HTTP Response, and then another, that's clearly a new MEP. You'd have to write a specification for that MEP, and an update to the SOAP HTTP binding indicating that use of the new MEP was enabled when the understood header was present. MEP's have a very strict role, which is primarily to set down the pattern in which >SOAP< messages are exchanged. If you still have one outbound, and one inbound, with addressing of the response implicit in the path taken by the request, then that might well be the Request/Response MEP in the SOAP Recommendation. If not, it's a new MEP and you must write a specification for that and indicate which bindings support it. Finally, I think there's a case to be made that this is a significant misuse of HTTP itself, which has a pretty strong notion of request/response on a POST (you couldn't send the header on a GET.) I think the burden would be on you to write the specification for the header in a manner that used HTTP appropriately (or else, I suppose, to admit that you are intentionally misusing it.) Bottom line: I think it's forbidden without a header and at best a very suspect design decision even with a header. Still, I suspect that you could with care write the spec for a header that would be technically legal, especially if the only SOAP message going back was indeed the final response. The above is just my opinion. Other readers of the scrolls my come to a different interpretation. Noah [1] http://www.w3.org/TR/soap12-part2/#http-respbindprocess -------------------------------------- Noah Mendelsohn IBM Corporation One Rogers Street Cambridge, MA 02142 1-617-693-4036 -------------------------------------- Hugo Haas <hugo@w3.org> Sent by: xml-dist-app-request@w3.org 11/12/2004 12:18 PM To: xml-dist-app@w3.org cc: www-ws-desc@w3.org, (bcc: Noah Mendelsohn/Cambridge/IBM) Subject: Seeking clarification about the use of the HTTP binding Hi. I am writing on behalf of the WS Description WG. While discussing MEPs, we could not come to an agreement about a particular use of the SOAP 1.2 HTTP binding. We would therefore like clarification about the following. If the HTTP binding is used with the SOAP Request-Response MEP, can the response _not_ be sent in the HTTP response message body, e.g. because the SOAP request was using an addressing extension to redirect the SOAP response? Cheers, Hugo -- Hugo Haas - W3C mailto:hugo@w3.org - http://www.w3.org/People/Hugo/
Attachments
- application/octet-stream attachment: signature.asc
Received on Friday, 12 November 2004 18:44:15 UTC