Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Fixed
-
3.1.12
-
None
-
Unknown
Description
In the RMOutInterceptor, the addAcknowledgements() method is called, only if it is for application message, or explictly required sequence acknowledgment:
boolean isAck = constants.getSequenceAckAction().equals(action);
if (isApplicationMessage || isAck) {....
Bu the WSRM specification says that the destination MUST return acknowledgment for the received messages, when CloseSequence is received:
Upon receipt of this message (CloseSequence), or subsequent to the RM Destination closing the Sequence of its own volition, the RM Destination MUST include a final SequenceAcknowledgement (within which the RM Destination MUST include the Final element) header block on any messages associated with the Sequence destined to the RM Source, including the CloseSequenceResponse message or on any Sequence fault Transmitted to the RM Source.
CXF does not include final ack neither in CloseSequenceResponse, nor in TerminateSequenceResponse (which might not be sent, if client does not terminate). Therefore, the ack should be sent immediately to the CloseSequenceResponse.