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





Reply via email to