[
https://issues.apache.org/jira/browse/CXF-6519?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Akitoshi Yoshida resolved CXF-6519.
-----------------------------------
Resolution: Fixed
- fixed CloseSequene handling for 2.7.x.
- added some tests in rt/ws/rm and systests/wr-rm to verify the correct
CloseSequence handling for WS-RM 1.1.
> WS-RM - Invalid response for CloseSequence
> ------------------------------------------
>
> Key: CXF-6519
> URL: https://issues.apache.org/jira/browse/CXF-6519
> Project: CXF
> Issue Type: Bug
> Components: WS-* Components
> Affects Versions: 2.7.17
> Reporter: Jozef Tomek
> Assignee: Akitoshi Yoshida
> Fix For: 2.7.18
>
>
> When endpoint is running with WS-RM 1.1/1.2 enabled, after CloseSequence
> control message (org.apache.cxf.ws.rm.RM11Constants.CLOSE_SEQUENCE_ACTION) is
> received, invalid empty response (202 Accepted with no content) is returned
> instead of CloseSequenceResponse.
> This in turn means that source RM endpoint won't proceed to terminate the
> sequence which results in sequence metadata not being being removed (as part
> of sequence termination handling) from RMTxStore if it's used on either side.
> I suspect one particular line to be causing the issue - see line 172 where I
> believe RM11Constants.CLOSE_SEQUENCE_ACTION should be used instead of
> RM11Constants.SEQUENCE_ACKNOWLEDGMENT_ACTION:
> {code:title=org.apache.cxf.ws.rm.RMInInterceptor|borderStyle=solid}
> 85 protected void handle(Message message) throws SequenceFault,
> RMException {
> ...
> 166 } else {
> 167 rme.receivedControlMessage();
> 168 if
> (RM10Constants.SEQUENCE_ACKNOWLEDGMENT_ACTION.equals(action)
> 169 ||
> RM11Constants.SEQUENCE_ACKNOWLEDGMENT_ACTION.equals(action)) {
> 170 processAcknowledgments(rme, rmps, protocol);
> 171 } else if (RM10Constants.CLOSE_SEQUENCE_ACTION.equals(action)
> 172 ||
> RM11Constants.SEQUENCE_ACKNOWLEDGMENT_ACTION.equals(action)) {
> 173 processSequence(destination, message);
> 174 } else if
> ((RM10Constants.CREATE_SEQUENCE_ACTION.equals(action)
> 175 || RM11Constants.CREATE_SEQUENCE_ACTION.equals(action))
> && !isServer) {
> 176 LOG.fine("Processing inbound CreateSequence on client
> side.");
> 177 Servant servant = rme.getServant();
> 178 Object csr = servant.createSequence(message);
> 179 Proxy proxy = rme.getProxy();
> 180 proxy.createSequenceResponse(csr, protocol);
> 181 return;
> 182 }
> 183 }
> 184
> 185 assertReliability(message);
> 186 }
> {code}
> I found the issue on v2.7.14, but I think the issue is present on all
> versions (since I see suspected code present in all versions)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)