Author: scheu
Date: Mon Nov 1 19:20:54 2010
New Revision: 1029796
URL: http://svn.apache.org/viewvc?rev=1029796&view=rev
Log:
AXIS2-4844
Contributor: Rich Scheuerle & Doug Larson
Summary:
Reshuffled some of the DispatchPhase logic to reduce the number of map accesses.
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
Modified:
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java?rev=1029796&r1=1029795&r2=1029796&view=diff
==============================================================================
---
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
(original)
+++
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
Mon Nov 1 19:20:54 2010
@@ -57,6 +57,19 @@ public class DispatchPhase extends Phase
public DispatchPhase(String phaseName) {
super(phaseName);
}
+
+
+ private Boolean getDisableAck(MessageContext msgContext) throws AxisFault {
+
+ // We should send an early ack to the transport whever possible, but
some modules need
+ // to use the backchannel, so we need to check if they have disabled
this code.
+ Boolean disableAck = (Boolean)
msgContext.getProperty(Constants.Configuration.DISABLE_RESPONSE_ACK);
+ if(disableAck == null) {
+ disableAck = (Boolean) (msgContext.getAxisService() != null ?
msgContext.getAxisService().getParameterValue(Constants.Configuration.DISABLE_RESPONSE_ACK)
: null);
+ }
+
+ return disableAck;
+ }
public void checkPostConditions(MessageContext msgContext) throws
AxisFault {
EndpointReference toEPR = msgContext.getTo();
@@ -118,33 +131,39 @@ public class DispatchPhase extends Phase
// We should send an early ack to the transport whever possible, but
some modules need
// to use the backchannel, so we need to check if they have disabled
this code.
- Boolean disableAck = (Boolean)
msgContext.getProperty(Constants.Configuration.DISABLE_RESPONSE_ACK);
- if(disableAck == null) {
- disableAck = (Boolean) (msgContext.getAxisService() != null ?
-
msgContext.getAxisService().getParameterValue(Constants.Configuration.DISABLE_RESPONSE_ACK)
: null);
- }
-
- if(disableAck == null || disableAck.booleanValue() == false) {
- String mepString =
msgContext.getAxisOperation().getMessageExchangePattern();
- if (isOneway(mepString)) {
- Object requestResponseTransport =
-
msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
- if (requestResponseTransport != null) {
- ((RequestResponseTransport)
requestResponseTransport).acknowledgeMessage(msgContext);
- }
- } else if (mepString.equals(WSDL20_2006Constants.MEP_URI_IN_OUT)
- ||
mepString.equals(WSDL20_2004_Constants.MEP_URI_IN_OUT)
- || mepString.equals(WSDL2Constants.MEP_URI_IN_OUT)) {
// OR, if 2 way operation but the response is intended to not use the response
channel of a 2-way transport
- // then we don't need to keep the transport waiting.
- Object requestResponseTransport =
-
msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
- if (requestResponseTransport != null) {
- if (AddressingHelper.isReplyRedirected(msgContext)
- &&
AddressingHelper.isFaultRedirected(msgContext)) {
- ((RequestResponseTransport)
requestResponseTransport).acknowledgeMessage(msgContext);
- }
- }
- }
+ String mepString =
msgContext.getAxisOperation().getMessageExchangePattern();
+
+ if (isOneway(mepString)) {
+ Object requestResponseTransport =
msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
+ if (requestResponseTransport != null) {
+
+ Boolean disableAck = getDisableAck(msgContext);
+ if (disableAck == null || disableAck.booleanValue() == false) {
+ ((RequestResponseTransport)
requestResponseTransport).acknowledgeMessage(msgContext);
+ }
+ }
+ } else if (AddressingHelper.isReplyRedirected(msgContext) &&
AddressingHelper.isFaultRedirected(msgContext)) {
+
+
+ if (mepString.equals(WSDL20_2006Constants.MEP_URI_IN_OUT)
+ || mepString.equals(WSDL20_2004_Constants.MEP_URI_IN_OUT)
+ || mepString.equals(WSDL2Constants.MEP_URI_IN_OUT)) {
+ // OR, if 2 way operation but the response is intended to not
use the response channel of a 2-way transport
+ // then we don't need to keep the transport waiting.
+
+ Object requestResponseTransport =
msgContext.getProperty(RequestResponseTransport.TRANSPORT_CONTROL);
+ if (requestResponseTransport != null) {
+
+ // We should send an early ack to the transport whever
possible, but some modules need
+ // to use the backchannel, so we need to check if they
have disabled this code.
+ Boolean disableAck = getDisableAck(msgContext);
+
+ if (disableAck == null || disableAck.booleanValue() ==
false) {
+ ((RequestResponseTransport)
requestResponseTransport).acknowledgeMessage(msgContext);
+ }
+
+ }
+ }
}
@@ -244,47 +263,49 @@ public class DispatchPhase extends Phase
*/
private void validateBindings(MessageContext msgctx) throws AxisFault {
- AxisService service = msgctx.getAxisService();
-
- boolean disableREST = false;
- Parameter disableRESTParameter = service
-
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_REST);
- if (disableRESTParameter != null
- &&
JavaUtils.isTrueExplicitly(disableRESTParameter.getValue())) {
- disableREST = true;
- }
-
- boolean disableSOAP11 = false;
- Parameter disableSOAP11Parameter = service
-
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_SOAP11);
- if (disableSOAP11Parameter != null
- &&
JavaUtils.isTrueExplicitly(disableSOAP11Parameter.getValue())) {
- disableSOAP11 = true;
- }
-
- boolean disableSOAP12 = false;
- Parameter disableSOAP12Parameter = service
-
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_SOAP12);
- if (disableSOAP12Parameter != null
- && JavaUtils
-
.isTrueExplicitly(disableSOAP12Parameter.getValue())) {
- disableSOAP12 = true;
- }
-
+ AxisService service = msgctx.getAxisService();
+
if (msgctx.isDoingREST()) {
+
+ boolean disableREST = false;
+ Parameter disableRESTParameter = service
+
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_REST);
+ if (disableRESTParameter != null
+ &&
JavaUtils.isTrueExplicitly(disableRESTParameter.getValue())) {
+ disableREST = true;
+ }
+
if (disableREST) {
throw new
AxisFault(Messages.getMessage("bindingDisabled","Http"));
}
} else if (msgctx.isSOAP11()) {
+
+ boolean disableSOAP11 = false;
+ Parameter disableSOAP11Parameter = service
+
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_SOAP11);
+ if (disableSOAP11Parameter != null
+ &&
JavaUtils.isTrueExplicitly(disableSOAP11Parameter.getValue())) {
+ disableSOAP11 = true;
+ }
+
if (disableSOAP11) {
throw new
AxisFault(Messages.getMessage("bindingDisabled","SOAP11"));
}
} else {
+
+ boolean disableSOAP12 = false;
+ Parameter disableSOAP12Parameter = service
+
.getParameter(org.apache.axis2.Constants.Configuration.DISABLE_SOAP12);
+ if (disableSOAP12Parameter != null
+ && JavaUtils
+
.isTrueExplicitly(disableSOAP12Parameter.getValue())) {
+ disableSOAP12 = true;
+ }
+
if(disableSOAP12) {
throw new
AxisFault(Messages.getMessage("bindingDisabled","SOAP12"));
}
}
-
}
private void fillContextsFromSessionContext(MessageContext msgContext)
throws AxisFault {
@@ -361,4 +382,4 @@ public class DispatchPhase extends Phase
|| mepString.equals(WSDL2Constants.MEP_URI_IN_ONLY));
}
-}
+}
\ No newline at end of file