java.lang.IllegalStateException: Response already committed  (during 
SequenceAcknowledgement)
---------------------------------------------------------------------------------------------

                 Key: SANDESHA2-147
                 URL: https://issues.apache.org/jira/browse/SANDESHA2-147
             Project: Sandesha2
          Issue Type: Bug
    Affects Versions: 1.3
         Environment: Fedora Core 7 
            Reporter: Enric Jaen


When Sandesha2 receives an RM request with an AckRequested  header block, the  
AckRequestedProcessor.processAckRequestedHeader invokes the  AxisEngine.send() 
and then tries to set setResponseWritten(true), but here comes the problem, as 
it doesn't find the  RequestResponseTransport, so it cannot put 
setResponseWritten to true.

As a consequence, later on the SequenceProcessor wrongly thinks that the 
AckResp has not been sent and sends it again the AckResp doing sendAckNow() , 
throwing an:

org.apache.axis2.AxisFault: Sandesha2 got an exception when processing an in 
message: java.lang.IllegalStateException: Response already committed.

I think that the problem is that normally the "In" MessageContext inside 
RequestResponseTransport is set after the Dispatch phase (specificaly in  
checkPostConditions), but the    AckRequestedProcessor handler is executed 
*before* finishing the Dispatch phase, so the "in" MessageContext has not been 
set yet.


I solved this issue by changing the following line of code in 
AckRequestedProcessor.processAckRequestedHeader():

TransportUtils.setResponseWritten(ackMsgCtx, true);  

to:

TransportUtils.setResponseWritten(rmMsgCtx.getMessageContext(), true);  

and it works. Notice that I changed ackMsgCtx (which is an OutOnly message) to 
rmMsgCtx (which is an InOut message)

Cheers,
/Enric

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to