- From: David Hull <dmh@tibco.com>
- Date: Fri, 16 Dec 2005 16:52:33 -0500
- To: "public-ws-addressing@w3.org" <public-ws-addressing@w3.org>
- Message-id: <43A33721.9060005@tibco.com>
We are chartered to define, among other things, "The use of these abstract message properties in the context of all WSDL 1.1 or WSDL 2.0 Message Exchange Patterns, including the asynchronous use of these MEPs. In particular, the relationship between message properties and WSDL 1.1 and WSDL 2.0 service descriptions will be provided if applicable." In particular, this presumably includes the meaning of the response endpoints ([reply endpoint] and [fault endpoint]) in the context of in-out and robust in-only, including cases where the [address] of the endpoint used is not anonymous. Thus the lengthy discussion in the async TF, now XMLP and elsewhere. What I want to probe at here is, how much are we /obligated/ to say about this case? Even when HTTP is the only game in town, many things can reasonably happen in response to an inbound message (not all of which are presently blessed by standards): * The server sends back an application-level SOAP response as the HTTP response (if the response endpoint is anonymous) * The server sends back an application-level non-SOAP HTTP response (e.g., a binary object). Presumably the response endpoint would have to be anonymous. * The server sends back a SOAP mustUnderstand fault as the HTTP response * The server sends back an empty acknowledgment and initiates a separate HTTP connection to deliver the response (if there is one). * The server sends back a non-empty SOAP acknowledgment (perhaps containing WS-RX acks for entirely different messages). * The server sends back a 3xx and expects the client to poll further (I believe this would happen with an anonymous response endpoint. The SOAP 1.2 HTTP binding allows for a 3xx response, but I'm not sure whether it's the same thing I've seen proposed in our discussions). * The server sends back an application-level request message (e.g., the WSDL MEP was in-only, the client is a cell phone and we're reversing the connection -- assuming this is to be considered "tunneling" and not "abuse of HTTP"). * The server holds on to the request and waits for the client to poll for it in some manner. * Various combinations of the above are also possible. E.g., send back some acks in a SOAP envelope and hold the response for polling. It's pretty clear to me that this cannot be an exhaustive list and that much of it is well beyond our scope. I believe that what we /can/ say is that anonymous is intended to mean "use a single connection for the inbound and outbound messages," a "connection" here being a single SOAP 1.1/HTTP connection or a single instance of the SOAP 1.2 request-response MEP, depending on which version of SOAP we're using. I will venture to say, but not quite as confidently, that a non-anonymous response address is intended to mean "if an outbound message is to be sent, it must (should?) not be sent as part of the same connection as the inbound message," with "connection" defined as before. This doesn't preclude /other/ SOAP-y stuff coming back on the original connection, just the outbound message. Nor does it preclude a non-SOAP reply in the anonymous case; the outbound message might not be SOAP. We also have to account for faults that occur before the WSA headers are understood (i.e. mustUnderstand faults and whatever else). Clearly, those have to use the original connection. We can say it that way, or say that they must use the anonymous address. Given that they can occur before we're in WSA-land at all, it's probably best to talk about connections as opposed to the anonymous address. I don't think we can or should say much more than this, but if we do, we should do it my favorite way :-).
Received on Friday, 16 December 2005 21:52:44 UTC