Brian De Pradine wrote:

In this scenario the server sends a response message to the client. The client then tries to send an acknowledgement to the server, but the acknowledgement gets lost, for whatever reason. This means that the WS-RM layer, in the server, will eventually time-out and send the response message again. This time the client should send an acknowledgement to cover both the original and the duplicate response messages.

This scenario is broken because the duplicate response never makes it to the WS-RM layer on the client side, because the AddressingBasedDispatcher recognises it as a duplicate and throws an exception instead. This means that the WS-RM layer never gets driven to send the second acknowledgement. The result is that the server will simply keep sending duplicate responses forever (almost)!

In order to get this scenario to work the AddressingBasedDispatcher will need to dispatch any duplicate messages as normal, instead of deciding that they are 'bad' and throwing an exception. This will allow WS-RM to be easily added into the picture at any time. This also means that if there is no WS-RM engaged then a service will potentially be driven more than once if there are duplicate messages (created by some other means). This shouldn't be a problem, however, because web services are meant to be stateless entities anyway :-) If you do happen to have a web service that is not stateless then you will need to engage WS-RM to ensure that it is not driven by duplicates.

OK I understand the scenario but I'm -1 on this because it breaks normal users. You can't say that Web services are stateless and therefore its ok to just let messages get delivered repeatedly violating our MEP concept!

RM is a lower level thing than MEPS- its infrastructural. The MEP should not be marked complete if the message hasn't been received to the satisfaction of the lower level.

If what Chamikara suggests will fix this for RM that's great but no matter what this change is not acceptable because its breaking the definition of a MEP. Think of a TCP analogy: TCP users a protocol similar to RM to resend packets. Anyone who implements something like HTTP over TCP doesn't need to be concerned with the response being delivered twice!!

Sanjiva.
--
Sanjiva Weerawarana, Ph.D.
Founder & Director; Lanka Software Foundation; http://www.opensource.lk/
Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
Director; Open Source Initiative; http://www.opensource.org/
Member; Apache Software Foundation; http://www.apache.org/
Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to