Hi Jaliya, I am working on integrating support for WSRM into an existing application. In a simple case I have a web service "A" that receives a SOAP request, invokes web service "B", which is potentially deployed on the same axis instance, and ultimately provides a response back to the caller (synchronously in this case). Furthermore, web service "A" may invoke web service "B" multiple times (perhaps simultaneously).
In addition, I have deployed a no-op service (similar to the RMService in the interop tests) to act as my WSRM client. It is also deployed on the same Axis instance (as opposed to staring up a separate SimpleAxisServer). In my case, I require the WSRM client to be long lived and thread safe (as there may be many web services that utilize it). My requirements dictate that I cannot start up a new client on a new port for each potential invoke of web service "B" that web service "A" needs to make. I have deployed web service "B" to support WSRM functionality. I can call web service "B" from a test driver (same as interop tests) with no problem. However, if I modify the driver (see attached) to send multiple sequences (send msg1, msg2, msg3 as last, send msg 1 as last), the test fails. The issue appears to be that the key that the WSRM client is using for its incoming sequences is not unique. In the attached test driver, it will always be "urn:wsrm:echoString". When the second sequence of messages is sent, the client queue (SandeshaQueue) still has an IncomingSequence object (with a different message identifier) stored internally. I believe that this IncomingSequence object is no longer needed (as the prior sequence of messages have been successfully delivered) and should be discarded (but the id would still need to be unique). Regards, Patrick
EchoClientAsyncAck.java
Description: Binary data
