Ok, so I'm wrong :) I've just found the part in the WS-RM 1.1 spec 816 /wsrm:TerminateSequence/wsrm:LastMsgNumber The RM Source SHOULD include this element in any TerminateSequence message it sends. The LastMsgNumber element specifies the highest assigned message number of all the Sequence Traffic Messages for the terminating Sequence.
The code does not need to change and is correct Andrew Gatford Technical Project Lead Websphere ESB Foundation Technologies Hursley MP211 IBM United Kingdom Laboratories, Hursley Park, Winchester, SO21 2JN Telephone : Internal (7) 245743 External 01962 815743 Internet : [email protected] From: Andrew K Gatford/UK/i...@ibmgb To: Amila Suriarachchi <[email protected]> Cc: "[email protected]" <[email protected]> Date: 24/03/2009 09:21 Subject: Re: RM 1.1 issue with Last message I agree with your analysis. I've looked at the RM 1.0 and 1.1 specs and neither have a LastMessage as part of the TerminateSequence message. My suggested fix would be to delete the TerminateSequence. isLastMsgNumberRequiredmethod and the private LastMessageNumber lastMessageNumber; The code in SandeshaClient and RMMsgCreator should be removed as well. Andrew Gatford Technical Project Lead Websphere ESB Foundation Technologies Hursley MP211 IBM United Kingdom Laboratories, Hursley Park, Winchester, SO21 2JN Telephone : Internal (7) 245743 External 01962 815743 Internet : [email protected] From: Amila Suriarachchi <[email protected]> To: "[email protected]" <[email protected]> Date: 24/03/2009 07:51 Subject: RM 1.1 issue with Last message hi, I did some testing with the Sandesha2 RM 1.1 support. My client is a simple axis2 service client which looks like this serviceClient.getOptions().setProperty(SandeshaClientConstants.OFFERED_SEQUENCE_ID, UUIDGenerator.getUUID()); serviceClient.getOptions().setProperty(SandeshaClientConstants.RM_SPEC_VERSION, Sandesha2Constants.SPEC_VERSIONS.v1_1); serviceClient.getOptions().setProperty(SandeshaClientConstants.LAST_MESSAGE, Constants.VALUE_TRUE); String sequenceKey = UUIDGenerator.getUUID(); serviceClient.getOptions().setProperty(SandeshaClientConstants.SEQUENCE_KEY, sequenceKey); OMElement omElement = serviceClient.sendReceive(getTestOMElement("testElement")); System.out.println("OM Element ==> " + omElement.toString()); SandeshaClient.terminateSequence(serviceClient, sequenceKey); For this test Everything worked fine. Then I went through the messages being passed and I saw a LastMsgNumber part with the terminate sequence message. <soapenv:Body> <wsrm:TerminateSequence xmlns:wsrm=" http://docs.oasis-open.org/ws-rx/wsrm/200702"> <wsrm:Identifier>urn:uuid:FF278F0C46A5F1FDAD1237880205767</wsrm:Identifier> <wsrm:LastMsgNumber>1</wsrm:LastMsgNumber> </wsrm:TerminateSequence> </soapenv:Body> RM 1.1 spec does not use the LastMessage concept. Therefore IMHO this is a wrong Terminate Message. Further I saw this method in the TerminateSequence.java public static boolean isLastMsgNumberRequired(String namespaceName){ if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName)) return true; return false; } I think this should be in other way around. Even in the RM 1.0 a last message part should not be send in a terminate sequence message. Any thoughts? thanks, Amila. -- Amila Suriarachchi WSO2 Inc. blog: http://amilachinthaka.blogspot.com/ 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 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
