OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-msg message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: FW: [ebxml-dev] ebMS Asynchronous Binding to HTTP

-----Original Message-----
From: Mike Dillon [mailto:mikedillon@attbi.com]
Sent: Wednesday, June 25, 2003 11:47 AM
To: Patrick Yee; james.wowchuk@marketboomer.com;
Cc: ebxml-msg@lists.oasis-open.org
Subject: RE: [ebxml-dev] ebMS Asynchronous Binding to HTTP

 This is a complicated issue that directly affects key MSH design choices.
 I suggest that the messaging Committee discuss this and issue a
 recommendation, if thats possible per OASIS procedures.

 I believe the intention of the ebXML Messaging Specification is that
	1) There is a clear seperation between the protocol stacks
	2) The ebXML level Acknowledgment is the event that tells you
		the message has been received

 My personal point of view is I would like to see the specification state
 1) A receiving MSH MUST attempt to return the http response before
	an ebXML level acknowledgment
 2) The message orginator must anticipate that due to processing,network
	or load balancing anamolies an asynchronous ebXML level acknowledgment
	may be received prior to receiving the original synchronous http response.
	The message originator SHOULD handle this scenario gracefully, and rely on
	the ebXML level acknowledgment as the event that signals the message has
	successfully received.

 In other words, I believe that the MSH systems should be designed to
 always return the http response first, and to gracefully handle the
 unusual situation where having sent a message, the ebXML acknowledgment
 is received back before the http response is received back.

 Its worth noting that AS2 has incorporated such language, mostly due to the
 that large messages are commonplace in the AS2 world, and if the http
 is not returned in a timely fashion you run into timeouts, out of synch
 transactions and resource/thread issues. The latest AS2 version states
 	"When handling an asynchronous request, the HTTP response must be
	sent back before the MDN is processed and sent on the separate connection."
 An MDN is a Message Disposition Notification, effectively the same as an
 level acknowledgement.

 I skimmed through the RosettaNet RNIF specification and I could not find a
 on this point.  Im curious how other async messaging services that sit on
top of HTTP deal
 with this issue...

 Mike Dillon
 Drummond Group, Inc
 817 875 0794

-----Original Message-----
From: Patrick Yee [mailto:kcyee@csis.hku.hk]
Sent: Wednesday, June 25, 2003 10:01 AM
To: james.wowchuk@marketboomer.com; ebxml-dev@lists.ebxml.org
Subject: Re: [ebxml-dev] ebMS Asynchronous Binding to HTTP

> There is an inherent danger if a MSH Ack is sent before the HTTP or TCP
> protocol has completed properly on the original message, either async or
> sync.  It is very easy for say a responding application to post a buffer
> data to the network transport layer without error.  It is only when a
> graceful close completes that one can be assured ALL the data was received
> properly.  Where both parties are not in agreement, the situation could
> arise where the say responding MSH may re-send or duplicate the message,
> requiring the receiving to eliminate duplicates.  This requires a higher
> level of MSH intelligence.  However the alternate situation could occurr
> where the responding MSH will NOT resend, but the receiving MSH will throw
> away what it got because of the network error - a reasonable action I
> believe.  So in this case, one party thinks it complete, while the other
> does not.  On some business transactions re-issuing the request may not be
> acceptable.

My feeling is, MSH Ack is the official way to denote whether a message has
been safely arrived at the receiving end or not. All the HTTP/TCP protocol
return code is for reference only. AFAIK, by design ebMS could be using
other underlying transport protocol other than HTTP. Therefore, the use of
HTTP response code is not official. Following this line of thought, to
determine whether to resend or not, whether to eliminate duplicates should
not based on return code of tranport protocol. Instead, MSH Ack and higher
level receipts should be used. Maybe this is called "higher level of MSH
intelligence"... but why not?

> Clearly if use of "polyphase commits" have taught us anything
> it is that first we deliver then we process: we don't act on anything
> we are sure we have all the data safely stored, then await a simple
> in the TCP networking case it is the FIN-ACK IP packets.

For the sake of argument, I agree that "we don't act on anything until we
are sure we have all the data safely stored". But once I am sure I have all
the data safely stored, I can then respond with a HTTP response code 200 and
send an async MSH Ack over a new HTTP channel. Still, I feel that there is
no relationship between this and the sequence of sending Ack/response.

Regards, -Patrick

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]