- From: Rogers, Tony <Tony.Rogers@ca.com>
- Date: Mon, 9 Oct 2006 14:40:58 +1000
- To: "Doug Davis" <dug@us.ibm.com>, <public-ws-addressing@w3.org>
- Message-ID: <BEE2BD647C052D4FA59B42F5E2D946B3375735@AUSYMS12.ca.com>
I wonder what the rationale was for deciding that MakeConnection was one-way? It seems to me that it should be Request-Response, so that it can either receive the pending response, or a message saying "message still pending" (something I saw on another e-mail). I note with interest that you say that the To in the HTTP response to MakeConnection is the replyTo from the original request - that seems a little odd (to my uneducated eyes). I would have expected it to be the replayTo from the MakeConnection (yes, I know that MC doesn't have a replyTo, but see above ponderings) If nothing else, I hope these discussions are providing material for the Primer/FAQ for RM :-) Tony Rogers tony.rogers@ca.com <blocked::mailto:tony.rogers@ca.com> ________________________________ From: public-ws-addressing-request@w3.org [mailto:public-ws-addressing-request@w3.org] On Behalf Of Doug Davis Sent: Monday, 9 October 2006 11:08 To: public-ws-addressing@w3.org Subject: An Example Use of RM's MakeConnection Bob asked me to send a set of example flows using MakeConnection in the hopes of helping people's understanding of its usage model. Below is a very simple request-response message flow. The WS-RM spec also has an example message flow that shows how the RM anon URI template can be used in a more interesting pattern - a notification scenario - sort of like a one-in/many-out scenario (see section C.6 in http://docs.oasis-open.org/ws-rx/wsrm/200608/wsrm-1.1-spec-cd-04.pdf ). Scenario: Client sends GetQuote to server unreliably. Server wants to send GetQuoteResponse using RM so it must sent a CreateSequence before I can send the GetQuoteResponse back. Step 1 - Client sends GetQuote to Server <soap:Envelope ...> <soap:Header> <wsa:To> http://stockquote.com </wsa:To> <wsa:Action> foo:GetQuote </wsa:Action> <wsa:MessageID> uuid://.../100 </wsa:MessageID> <wsa:ReplyTo> <wsa:Address> http://...wsrm/anonymous?id=...1 </wsa:Address> </wsa:ReplyTo> </soap:Header> <soap:Body> <foo:GetQuote> IBM </foo:GetQuote> </soap:Body> </soap:Envelope> Notice the wsa:ReplyTo uses the RM anon URI template. If the Server didn't need to use RM then it could just use the transport backchannel to send the GetQuoteResponse if it wanted (but that would be boring :-) Step 2 - Server sends an RM CreateSequence to the Client using the only means it has available - the transport backchannel. <soap:Envelope ...> <soap:Header> <wsa:To> http://...wsrm/anonymous?id=...1 </wsa:To> <wsa:Action> http://...wsrm/CreateSequence </wsa:Action> <wsa:MessageID> uuid://.../101 </wsa:MessageID> <wsa:ReplyTo> <wsa:Address> http://stockquote.com </wsa:Address> </wsa:ReplyTo> </soap:Header> <soap:Body> <wsrm:CreateSequence> ... </wsrm:CreateSequence> </soap:Body> </soap:Envelope> Step 3 - Client sends a CreateSequenceResponse to wsa:ReplyTo <soap:Envelope ...> <soap:Header> <wsa:To> http://stockquote.com </wsa:To> <wsa:Action> http://...wsrm/CreateSequenceResponse </wsa:Action> <wsa:RelatesTo> uuid://.../101 </wsa:RelatesTo> </soap:Header> <soap:Body> <wsrm:CreateSequenceResponse> ... </wsrm:CreateSequenceResponse> </soap:Body> </soap:Envelope> Step 4 - Having not received the GetQuoteResponse, the Client uses MakeConnection to allow it to flow back <soap:Envelope ...> <soap:Header> <wsa:To> http://stockquote.com </wsa:To> <wsa:Action> http://...wsrm/MakeConnection </wsa:Action> </soap:Header> <soap:Body> <wsrm:MakeConnection> <wsrm:Address> http://...wsrm/anonymous?id=...1 </wsrm:Address> </wsrm:MakeConnection> </soap:Body> </soap:Envelope> Notice: no wsa:ReplyTo since its a one-way Step 5 - Server uses this backchannel to let the GetQuoteResponse flow back to the Client <soap:Envelope ...> <soap:Header> <wsa:To> http://...wsrm/anonymous?id=...1 </wsa:To> <wsa:Action> foo://GetQuoteResponse </wsa:Action> <wsa:RelatesTo> uuid://.../100 </wsa:RelatesTo> <wsrm:Sequence> ... </wsrm:Sequence> </soap:Header> <soap:Body> <foo:GetQuoteResponse> 139.0 </foo:GetQuoteResponse> </soap:Body> </soap:Envelope> Notice the wsa:RelatesTo points to the GetQuote request message and it is sent using RM (the Sequence header), and that the SOAP Envelope looks exactly like it would if it had been sent on the original transport backchannel - meaning, the wsa:To is derived from the wsa:ReplyTo from the GetQuote request message not the MakeConnection. HTH. BTW, I will try to join the WSA call tomorrow but I have a conflict from 4-5 eastern, so if there are any questions on this example I should be able to answer them at 5. thanks -Doug
Received on Monday, 9 October 2006 04:41:10 UTC