- From: Rogers, Tony <Tony.Rogers@ca.com>
- Date: Tue, 10 Jul 2007 22:03:37 +1000
- To: "Christopher B Ferris" <chrisfer@us.ibm.com>
- Cc: "David Illsley" <david.illsley@uk.ibm.com>, "GUILLON Benoit" <guillon@sungard-finance.fr>, <public-ws-addressing@w3.org>, <public-ws-addressing-request@w3.org>
- Message-ID: <BEE2BD647C052D4FA59B42F5E2D946B3720226@AUSYMS12.ca.com>
Sorry, I wasn't completely clear (inadequately pedantic!). You will only get one response on the HTTP backchannel - it will be HTTP 202 or a fault. Sure, you can get a fault later, but it cannot appear on the backchannel. Tony Rogers ________________________________ From: Christopher B Ferris [mailto:chrisfer@us.ibm.com] Sent: Tue 10-Jul-07 22:01 To: Rogers, Tony Cc: David Illsley; GUILLON Benoit; public-ws-addressing@w3.org; public-ws-addressing-request@w3.org Subject: RE: Asynchronous calls Tony, I'm fairly certain that the statement you are making is somewhat inaccurate. You MAY get both, the fault might be transmitted separately much later, when the message is actually processed. Possibly, you are referring to the initial response carried on the HTTP response message which MAY be either a 200, 202 OR a 3xx 4xx or 5xx response per the SOAP 1.2 HTTP binding [1]. Note that the SOAP 1.2 HTTP binding does permit that a SOAP envelope be present on a 202 response message. An HTTP 202 means that the message was accepted for processing... nothing more. It is intentionally non-committal. Quoting RFC2616 [2] 10.2.3 202 Accepted The request has been accepted for processing, but the processing has not been completed. The request might or might not eventually be acted upon, as it might be disallowed when processing actually takes place. There is no facility for re-sending a status code from an asynchronous operation such as this. The 202 response is intentionally non-committal. Its purpose is to allow a server to accept a request for some other process (perhaps a batch-oriented process that is only run once per day) without requiring that the user agent's connection to the server persist until the process is completed. The entity returned with this response SHOULD include an indication of the request's current status and either a pointer to a status monitor or some estimate of when the user can expect the request to be fulfilled. One cannot assume that ANY of the headers have been processed at the point at which a 202 has been received. However, since the SOAP HTTP binding does permit that a SOAP envelope be returned with the 202 response message. Such a message **could** provide a status indicator as to disposition of the message (e,g. successfully dispatched for processing). I think that what David was suggesting is that infrastructure code today generally does not do something like this, and mucking around with the infrastructure code is not advisable. I would tend to agree. However, if you wanted to do something such as initially suggested, you can design a process that spans multiple WSDL operations in which a "request" message is comprised of a req/resp MEP at the SOAP/WSDL level with the response being a status inidicator, and with the application processing effectively doing the dispatching for subsequent processing. In such a case, the response is more likely to be either a 200 or a 3, 4 or 5XX not a 202, because from the perspective of the HTTP application-layer, the request HAS been processed (the processing is the act of dispatching for subsequent processing). WS-RM is an example of an interchange that will (whcen configured to provide an Ack to the anon endpoint) in which there is an intermediate response of sorts. This is typically an infrastructure-level response that also makes no claims as to whether or not the message can or even will be successfully processed (e.g. a subsequent fault MAY be generated). However, to the original question, as to whether it would be compliant with WS-A to have such an intermediate response, it would largely depend upon the design of the application. As mentioned, if you have such a long-running operation and you want to provide the requestor with some sort of intermediate status, then design the interfaces accordingly (e.g. don't try to map such a thing to a single req/resp operation in WSDL, but rather as described above). [1] http://www.w3.org/TR/2007/REC-soap12-part2-20070427/#http-bindrespnode [2] http://ietf.org/rfc/rfc2616 Cheers, Christopher Ferris STSM, Software Group Standards Strategy email: chrisfer@us.ibm.com blog: http://www.ibm.com/developerworks/blogs/page/chrisferris phone: +1 508 234 2986 public-ws-addressing-request@w3.org wrote on 07/09/2007 06:19:17 PM: > To be a little pedantic, what you will get is an HTTP 202 *OR* a > fault - you will never get both; you should get exactly one. The 202 > is the response saying "got the message, working on it, I didn't see > anything obviously wrong with it before I sent this 202 response" - > at that point you know it has read and interpreted some of the > headers at least. > > Tony Rogers > CA, Inc > Senior Architect, Development > tony.rogers@ca.com > > From: public-ws-addressing-request@w3.org on behalf of David Illsley > Sent: Tue 10-Jul-07 5:57 > To: GUILLON Benoit > Cc: public-ws-addressing@w3.org; public-ws-addressing-request@w3.org > Subject: Re: Asynchronous calls > > Hi, > What you will get when using the WS-A implementations I'm aware of is an > HTTP 202 indicating that the message was successfully received, and if > there is a fault, the fault will be sent to the ReplyTo/FaultTo per WS-A > Core. Anything over and above that in the direction you suggest isn't in > any specification I'm aware of so you'd have to define that yourself and > make your infrastructure support it (which isn't something I'd advise). > David > > David Illsley > Web Services Development > MP211, IBM Hursley Park, SO21 2JN > +44 (0)1962 815049 (Int. 245049) > david.illsley@uk.ibm.com > > > > From: > "GUILLON Benoit" <guillon@sungard-finance.fr> > To: > <public-ws-addressing@w3.org> > Date: > 07/09/2007 01:58 PM > Subject: > Asynchronous calls > > > > Hello, > > I?m working on publishing long operations via WebServices: client sends a > message via HTTP to my service which starts the long operation. Client > gets the result later in a JMS queue or its own endpoint gets called with > the response. To achieve this, I plan to use WS-Addressing for message > correlation and reply-to endpoint definition. > > However, I want my service to return a first reply saying ?Ok I managed to > start the long operation (or not and why)? in the HTTP response of > client?s call whatever the ?reply-to? field was. > > I was wondering if this use-case was still compliant with WS-Addressing or > if it was a bad use of ?reply-to?. > > Best regards > > Benoît Guillon * NTIC * SunGard * Asset Arena Investment Accounting * 7 > rue Royale, 173 Bureaux de la Colline, Bâtiment E, 92213 Saint-Cloud > Cedex, France * Tel +33 1 49 11 31 87 * Fax +33 1 49 11 30 30 * > > > CONFIDENTIALITY: This email (including any attachments) may contain > confidential, proprietary and privileged information, and unauthorized > disclosure or use is prohibited. If you received this email in error, > please notify the sender and delete this email from your system. Thank you > > > > CONFIDENTIALITÉ: Ce courrier électronique (pièces jointes incluses) peut > contenir des informations confidentielles, propriétaires et privilégiées, > dont la divulgation ou l'utilisation non-autorisée est interdite. Si vous > avez reçu ce courrier électronique par erreur, nous vous remercions de > bien vouloir avertir l'expéditeur et détruire ce courrier électronique de > votre système. Merci. > > > > > > > Unless stated otherwise above: > IBM United Kingdom Limited - Registered in England and Wales with number > 741598. > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU > > > > > > >
Received on Tuesday, 10 July 2007 12:08:05 UTC