On Thu, May 14, 2009 at 10:14 AM, Amila Suriarachchi < [email protected]> wrote:
> > > On Wed, May 13, 2009 at 9:22 PM, Andrew K Gatford <[email protected]>wrote: > >> >> Hi Amilas, >> >> I've got to ask the question - why do we need to force the 202 ? > > This is only for synapse nhttp transport. It works fine with axis2 http > transports. > > When a RM Client sends and MakeConnection there is a possibility that > server sends a 202 Accepted header if there is nothing to reply. And also > this happens with TerminateSequenceResponse send by the client. > > nhttp server worker code looked (when I start with this issue) like this, > > String method = request.getRequestLine().getMethod().toUpperCase(); > if ("GET".equals(method)) { > processGet(); > } else if ("POST".equals(method)) { > processPost(); > } else { > handleException("Unsupported method : " + method, null); > } > > // processPost method calls for engine receive and it comes here > > if (msgContext != null && > msgContext.getOperationContext() != null && > > (!msgContext.getOperationContext().getAxisOperation().isControlOperation()) > { > > this logic responsible for sending 202 accepted. > > } > > Both make Connection and terminate sequence operations are controlled > operations. So non of them > go inside into the if block. > > Then I came up with this solution. > > 1. Change the nhttp transport to send 202 accepted header if the message > context has FORCE_SC_ACCEPTED > > if (msgContext != null && > msgContext.getOperationContext() != null && > > (!msgContext.getOperationContext().getAxisOperation().isControlOperation() > || > > msgContext.isPropertyTrue(NhttpConstants.FORCE_SC_ACCEPTED))) { > > this logic responsible for sending 202 accepted. > > } > 2. Set this parameter at the Sandesha level. > > If you have normal Axis2 http transport it has this logic for this, > > if (TransportUtils.isResponseWritten(msgContext) || > ((requestResponseTransportControl != null) && > requestResponseTransportControl.getStatus().equals( > > RequestResponseTransport.RequestResponseTransportStatus.SIGNALLED))) { > // The response is written or signalled. The current status is > used (probably SC_OK). > } else { > // The response may be ack'd, mark the status as accepted. > response.setStatus(HttpStatus.SC_ACCEPTED); > } > > Problem here is two transports use different logic. > > > >> >> We shouldn't need to Force at all as we get 202's from SequenceAcks etc. > > > We do get 202 for SequenceAcks for axis2 http transport. Actually I have > missed to test this with synapse nhttp. > >> >> >> I think the problem is probably with the module.xml file that you are >> using. David Parsons recently fixed an interop issue where we had >> misdefined the MakeConnection and Terminate messages as 2-way messages. My >> thought would be that you aren't running with that change. Can you check >> and see if the synapse transport is ok when the operations are defined >> correctly ? > > will do a test with latest revision and confirm you. But I am feeling this > is not the case. > I tested with the revision 774627 (without the above change) . But it does not work without this change. thanks, Amila. > > > thanks, > Amila. > > >> >> >> Andrew Gatford >> Technical Project Lead >> Websphere ESB Foundation Technologies >> Hursley MP211 >> IBM United Kingdom Laboratories, Hursley Park, Winchester, SO21 2JN >> Telephone : >> Internal (7) 245743 >> External 01962 815743 >> Internet : [email protected] >> ----- Forwarded by Andrew K Gatford/UK/IBM on 13/05/2009 16:39 ----- >> From: [email protected] To: [email protected] Date: 13/05/2009 >> 07:57 Subject: svn commit: r774240 - in >> /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2: >> Sandesha2Constants.java msgprocessors/MakeConnectionProcessor.java >> msgprocessors/TerminateSeqResponseMsgProcessor.java >> ------------------------------ >> >> >> >> Author: amilas >> Date: Wed May 13 06:57:00 2009 >> New Revision: 774240 >> >> URL: http://svn.apache.org/viewvc?rev=774240&view=rev >> Log: >> Set a property for make connections and terminate response messages to >> send 202 accepted >> header for synapse nhttp transport. Also increas the terminate message >> delay time suite for nhttp transport >> as well >> >> Modified: >> >> >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java >> >> >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java >> >> >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java >> >> Modified: >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java >> URL: >> http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java?rev=774240&r1=774239&r2=774240&view=diff >> >> ============================================================================== >> --- >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java >> (original) >> +++ >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java >> Wed May 13 06:57:00 2009 >> @@ -537,7 +537,7 @@ >> >> int CLIENT_SLEEP_TIME = 10000; >> >> - int TERMINATE_DELAY = 100; >> + int TERMINATE_DELAY = 500; >> >> static final int TRANSPORT_WAIT_TIME = 60000; >> >> >> Modified: >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java >> URL: >> http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java?rev=774240&r1=774239&r2=774240&view=diff >> >> ============================================================================== >> --- >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java >> (original) >> +++ >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java >> Wed May 13 06:57:00 2009 >> @@ -233,6 +233,8 @@ >> >> } else { >> >> if (LoggingControl.isAnyTracingEnabled() && >> log.isDebugEnabled()) >> >> log.debug("Exit: >> MakeConnectionProcessor::processInMessage, no matching message found"); >> + >> // this property indicate synapse nhttp >> transport to send a 202 Accepted header >> + >> rmMsgCtx.getMessageContext().setProperty("FORCE_SC_ACCEPTED", >> Constants.VALUE_TRUE); >> >> return false; >> >> } >> } else >> { >> >> Modified: >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java >> URL: >> http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java?rev=774240&r1=774239&r2=774240&view=diff >> >> ============================================================================== >> --- >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java >> (original) >> +++ >> webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java >> Wed May 13 06:57:00 2009 >> @@ -20,6 +20,7 @@ >> package org.apache.sandesha2.msgprocessors; >> >> import org.apache.axis2.AxisFault; >> +import org.apache.axis2.Constants; >> import org.apache.axis2.context.ConfigurationContext; >> import org.apache.axis2.context.MessageContext; >> import org.apache.commons.logging.Log; >> @@ -78,7 +79,8 @@ >> >> // Stop this message travelling further >> through the Axis runtime >> terminateResRMMsg.pause(); >> - >> + // this property indicate synapse nhttp >> transport to send a 202 Accepted header >> + >> msgContext.setProperty("FORCE_SC_ACCEPTED", Constants.VALUE_TRUE); >> if(log.isDebugEnabled()) >> log.debug("Exit: TerminateSeqResponseMsgProcessor::processInMessage " + >> Boolean.TRUE); >> return true; >> } >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> >> >> >> >> ------------------------------ >> >> * >> * >> >> *Unless stated otherwise above: >> IBM United Kingdom Limited - Registered in England and Wales with number >> 741598. >> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU >> * >> >> >> >> >> >> >> > > > -- > Amila Suriarachchi > WSO2 Inc. > blog: http://amilachinthaka.blogspot.com/ > -- Amila Suriarachchi WSO2 Inc. blog: http://amilachinthaka.blogspot.com/
