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]