We have recently identified an issue with the WS-RM LastMessage event on a WS-RM Endpoint termination sending the LastMessage xml back onto itself. e.g. server A instead of sending LastMessage to Client A sends the transaction back to its own Server Endpoint Address..
The scenario is a WS-RM transaction using request/response so the source message contains a sequence and the response message contains a sequence also. The sequence in the response is the sequence offered by the client in the CreateSequence request as per the WS-RM specification. SInce the LastMessage isnt sent properly, the client doesn't reset any sequences and when the server is started again all subsequent sequence id are considered invalid. Since the sequences don't expire the client will always use the same sequence until told otherwise. Ws-RM doesn't have any specfic client config. I cannot include the WSDL as it's commercially sensistive. It does however provide a request response pattern: <wsdl:binding name="xxxBinding" type="tns:xxxx"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsaw:UsingAddressing wsdl:required="true"/> <wsp:PolicyReference URI="#UnifiedMessaging_Policy" /> <wsdl:operation name="xxxxxxx"> <soap:operation soapAction="http://xxxxxxxx" style="document" /> <wsdl:input name="xxxxxRequest"> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> Server source policy config: <wsrm-mgr:sourcePolicy includeOffer="false" sequenceExpiration="PT0S"> <wsrm-mgr:sequenceTerminationPolicy terminateOnShutdown="true" /> </wsrm-mgr:sourcePolicy> Server WSDL Assertion: <wsrmp:RMAssertion> <wsrmp:BaseRetransmissionInterval Milliseconds="10000" /> <wsrmp:AcknowledgementInterval Milliseconds="5000" /> </wsrmp:RMAssertion> The platform is JBoss Fuse 6.1 which contains cxf 2.7.0 Has anyone else seen this scenario ? It seems like request/response with offers seems to be a rare use pattern. Some XML examples of the WS-RM transaction ID: 1 Address: https://10.15.2.10:9001/cxf/service Encoding: UTF-8 Http-Method: POST Content-Type: text/xml; charset=UTF-8 Headers: {Accept=[*/*], Cache-Control=[no-cache], connection=[keep-alive], Content-Length=[1534], content-type=[text/xml; charset=UTF-8], Host=[10.15.2.10:9001], Pragma=[no-cache], SOAPAction=["http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence"], User-Agent=[Apache CXF 2.7.0.redhat-610379]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <Action xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</Action> <MessageID xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:33c3f781-966d-46e2-acc7-5b0efefc7c2e</MessageID> <To xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">https://10.15.2.10:9001/cxf/service</To> <ReplyTo xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <Address>http://10.2.122.92:9990/decoupled_endpoint</Address> </ReplyTo> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:mustUnderstand="1"> <wsse:UsernameToken wsu:Id="UsernameToken-65B958CE914DA0512E14593984175601"> <wsse:Username>xxx</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">yyyy</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <CreateSequence xmlns="http://schemas.xmlsoap.org/ws/2005/02/rm" xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <AcksTo> <ns2:Address>http://10.2.122.92:9990/decoupled_endpoint</ns2:Address> </AcksTo> <Expires>PT0S</Expires> <Offer> <Identifier>urn:uuid:d10bc416-acd0-40e8-a1bd-f1a1a552c39b</Identifier> <Expires>PT0S</Expires> </Offer> </CreateSequence> </soap:Body> </soap:Envelope> -------------------------------------- ID: 1 Response-Code: 202 Encoding: UTF-8 Content-Type: text/xml Headers: {} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <MessageID xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:3ca0fb2f-8a6d-4848-92d2-df7ae0be7efb</MessageID> <To xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</To> <RelatesTo xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://www.w3.org/2005/08/addressing/unspecified</RelatesTo> </soap:Header> <soap:Body/> </soap:Envelope> Outbound Message TO SOAP CLIENT --------------------------- ID: 1 Address: http://10.2.122.92:9990/decoupled_endpoint Encoding: UTF-8 Http-Method: POST Content-Type: text/xml Headers: {Accept=[*/*]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <Action xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse</Action> <MessageID xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:1d262900-74e4-4700-be70-6d9dfd48122b</MessageID> <To xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://10.2.122.92:9990/decoupled_endpoint</To> <RelatesTo xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:33c3f781-966d-46e2-acc7-5b0efefc7c2e</RelatesTo> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:mustUnderstand="1"> <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-5A6B2E8551939059E514593984185241"> <wsse:Username>xxxxx</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">yyyyyy</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <CreateSequenceResponse xmlns="http://schemas.xmlsoap.org/ws/2005/02/rm" xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <Identifier>urn:uuid:03e0f5f8-9a4c-421c-9cce-0a66b94888ae</Identifier> <Expires>PT0S</Expires> <Accept> <AcksTo> <ns2:Address>https://10.15.2.10:9001/cxf/service</ns2:Address> </AcksTo> </Accept> </CreateSequenceResponse> </soap:Body> </soap:Envelope> -------------------------------------- Inbound Message FROM SOAP CLIENT ---------------------------- ID: 2 Address: https://10.15.2.10:9001/cxf/servicehttps://10.15.2.10:9001/cxf/service Encoding: UTF-8 Http-Method: POST Content-Type: text/xml; charset=UTF-8 Headers: {Accept=[*/*], Cache-Control=[no-cache], connection=[keep-alive], content-type=[text/xml; charset=UTF-8], Host=[10.15.2.10:9001], Pragma=[no-cache], SOAPAction=["http://xxxxxxxxxxx], transfer-encoding=[chunked], User-Agent=[Apache CXF 2.7.0.redhat-610379]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <Action xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://xxxxxxxxxxx</Action> <MessageID xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:35f455d9-a276-4edf-bb26-36e0e5ae6b37</MessageID> <To xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">https://10.15.2.10:9001/cxf/service</To> <ReplyTo xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <Address>http://10.2.122.92:9990/decoupled_endpoint</Address> </ReplyTo> <wsrm:Sequence xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" soap:mustUnderstand="1"> <wsrm:Identifier>urn:uuid:03e0f5f8-9a4c-421c-9cce-0a66b94888ae</wsrm:Identifier> <wsrm:MessageNumber>1</wsrm:MessageNumber> </wsrm:Sequence> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:mustUnderstand="1"> <wsse:UsernameToken wsu:Id="UsernameToken-65B958CE914DA0512E14593984186992"> <wsse:Username>xxxxx</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">yyyyy</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <WSDL INPUT BODY MESSAGE/> </soap:Body> </soap:Envelope> -------------------------------------- Outbound Message TO SOAP CLIENT --------------------------- ID: 2 Response-Code: 202 Encoding: UTF-8 Content-Type: text/xml Headers: {} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <MessageID xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:0bc725e1-534d-4653-9f16-2ea02a0657f4</MessageID> <To xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</To> <RelatesTo xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://www.w3.org/2005/08/addressing/unspecified</RelatesTo> </soap:Header> <soap:Body/> </soap:Envelope> -------------------------------------- Outbound Message TO SOAP CLIENT --------------------------- ID: 2 Address: http://10.2.122.92:9990/decoupled_endpoint Encoding: UTF-8 Http-Method: POST Content-Type: text/xml Headers: {Accept=[*/*], breadcrumbId=[ID-fuse1-37687-1459398351533-0-1], Host=[10.15.2.10:9001], SOAPAction=[http://xxxxx], startTime=[1459398418701], successful=[true], User-Agent=[Apache CXF 2.7.0.redhat-610379]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <Action xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://xxxxxxxxxxxx</Action> <MessageID xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:851099ff-7cae-4f3b-9656-bcf1e4119913</MessageID> <To xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://10.2.122.92:9990/decoupled_endpoint</To> <RelatesTo xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:35f455d9-a276-4edf-bb26-36e0e5ae6b37</RelatesTo> <wsrm:Sequence xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" soap:mustUnderstand="1"> <wsrm:Identifier>urn:uuid:d10bc416-acd0-40e8-a1bd-f1a1a552c39b</wsrm:Identifier> <wsrm:MessageNumber>1</wsrm:MessageNumber> </wsrm:Sequence> <wsrm:SequenceAcknowledgement xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"> <wsrm:Identifier>urn:uuid:03e0f5f8-9a4c-421c-9cce-0a66b94888ae</wsrm:Identifier> <wsrm:AcknowledgementRange Lower="1" Upper="1"/> </wsrm:SequenceAcknowledgement> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:mustUnderstand="1"> <wsse:UsernameToken wsu:Id="UsernameToken-65B958CE914DA0512E14593984186992"> <wsse:Username>xxxx</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">yyyyyyy</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <WSDL OUTPUT BODY MESSAGE> </soap:Body> </soap:Envelope> -------------------------------------- Output Message TO CLIENT ---------------------------- ID: 4 Address: https://10.15.2.10:9001/cxf/servicehttps://10.15.2.10:9001/cxf/service Encoding: UTF-8 Http-Method: POST Content-Type: text/xml; charset=UTF-8 Headers: {Accept=[*/*], Cache-Control=[no-cache], connection=[keep-alive], Content-Length=[1339], content-type=[text/xml; charset=UTF-8], Host=[10.15.2.10:9001], Pragma=[no-cache], SOAPAction=["http://schemas.xmlsoap.org/ws/2005/02/rm/SequenceAcknowledgement"], User-Agent=[Apache CXF 2.7.0.redhat-610379]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <Action xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2005/02/rm/SequenceAcknowledgement</Action> <MessageID xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:19ec4cd7-d0ad-43ce-b94c-dee5f4e8d1b2</MessageID> <To xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">https://10.15.2.10:9001/cxf/service</To> <wsrm:SequenceAcknowledgement xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"> <wsrm:Identifier>urn:uuid:d10bc416-acd0-40e8-a1bd-f1a1a552c39b</wsrm:Identifier> <wsrm:AcknowledgementRange Lower="1" Upper="1"/> </wsrm:SequenceAcknowledgement> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:mustUnderstand="1"> <wsse:UsernameToken wsu:Id="UsernameToken-65B958CE914DA0512E14593984199953"> <wsse:Username>xxxxx</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">yyyyyyyyyyy</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body/> </soap:Envelope> -------------------------------------- ID: 4 Response-Code: 202 Encoding: UTF-8 Content-Type: text/xml Headers: {} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <MessageID xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:d3478830-e787-4562-8429-6b87919e5f36</MessageID> <To xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</To> <RelatesTo xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://www.w3.org/2005/08/addressing/unspecified</RelatesTo> </soap:Header> <soap:Body/> </soap:Envelope> -------------------------------------- System is now shutdown Outbound Message To client is instead sent from server to itself --------------------------- ID: 5 Address: https://10.15.2.10:9001/cxf/service Encoding: UTF-8 Http-Method: POST Content-Type: text/xml Headers: {Accept=[*/*], SOAPAction=["http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage"]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <Action xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2005/02/rm/LastMessage</Action> <MessageID xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">urn:uuid:f7f4fd64-2ade-425a-b32a-27457fb0e8bd</MessageID> <To xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">https://10.15.2.10:9001/cxf/service</To> <wsrm:Sequence xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" soap:mustUnderstand="1"> <wsrm:Identifier>urn:uuid:d10bc416-acd0-40e8-a1bd-f1a1a552c39b</wsrm:Identifier> <wsrm:MessageNumber>2</wsrm:MessageNumber> <wsrm:LastMessage/> </wsrm:Sequence> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:mustUnderstand="1"> <wsse:UsernameToken wsu:Id="UsernameToken-5A6B2E8551939059E514593987877012"> <wsse:Username>xxxxx</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">yyyyyyy</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body/> </soap:Envelope> --------------------------------------