[ 
https://issues.apache.org/jira/browse/CXF-6519?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14661574#comment-14661574
 ] 

Jozef Tomek commented on CXF-6519:
----------------------------------

Hi Aki

You're right. With 2.7.x, in both situations (before and after I patched that 
IF statement), server side does not really behave as one would expect - it 
either sends empty response or (with the patch) its sends 
SequenceAcknowledgement instead of CloseSequenceResponse.

While looking closely once again at the messages being exchanged, I see that 
even client, in it's CloseSequence request, does not send what I believe it 
should. There's no body and I would expect to see CloseSequence element there.

But, luckily, for my needs, with that incorrect patch of mine, server side and 
client side that I'm using, while both doing wrong things, do proceed and 
terminate the sequence at the end ... which is what matters to me right now.

Regards
Jozef

> 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)

Reply via email to