Author: charith
Date: Wed Feb 2 06:17:44 2011
New Revision: 1066339
URL: http://svn.apache.org/viewvc?rev=1066339&view=rev
Log:
fixing a Issue in the current Endpoint behavior with Out only MEP where
endpoints not get notified when the endpoint is down.
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java?rev=1066339&r1=1066338&r2=1066339&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
Wed Feb 2 06:17:44 2011
@@ -107,6 +107,26 @@ public class SynapseCallbackReceiver imp
String messageID = null;
+ /**
+ * In an Out-only scenario if the client receives a HTTP 202 accepted
we need to
+ * remove the call back/s registered for that request.
+ * This if will check weather this is a message sent in a that
scenario and remove the callback
+ */
+ if (messageCtx.getProperty(NhttpConstants.HTTP_202_RECEIVED) != null
&& "true".equals(
+ messageCtx.getProperty(NhttpConstants.HTTP_202_RECEIVED))) {
+ if (callbackStore.containsKey(messageCtx.getMessageID())) {
+ callbackStore.remove(messageCtx.getMessageID());
+ if (log.isDebugEnabled()) {
+ log.debug("CallBack registered with Message id : " +
messageCtx.getMessageID() +
+ " removed from the " +
+ "callback store since we got an accepted
Notification");
+ }
+ }
+
+ return;
+ }
+
+
if (messageCtx.getOptions() != null &&
messageCtx.getOptions().getRelatesTo() != null) {
// never take a chance with a NPE at this stage.. so check at each
level :-)
Options options = messageCtx.getOptions();
Modified:
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java?rev=1066339&r1=1066338&r2=1066339&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
(original)
+++
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
Wed Feb 2 06:17:44 2011
@@ -713,9 +713,13 @@ public class ClientHandler implements NH
MessageContext responseMsgCtx =
outMsgCtx.getOperationContext().
getMessageContext(WSDL2Constants.MESSAGE_LABEL_IN);
if (responseMsgCtx == null ||
-
outMsgCtx.getOptions().isUseSeparateListener()) {
- // This means that we received a 202 accepted for
an out-only ,
- // for which we do not need a dummy message anyway
+ outMsgCtx.getOptions().isUseSeparateListener()
||
+ outMsgCtx.getOperationContext().isComplete()) {
+ // Since we need to notify the SynapseCallback
receiver to remove the
+ // call backs registered we set a custom property
+
outMsgCtx.setProperty(NhttpConstants.HTTP_202_RECEIVED, "true");
+ mr.receive(outMsgCtx);
+
return;
}
responseMsgCtx.setServerSide(true);
Modified:
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java?rev=1066339&r1=1066338&r2=1066339&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
(original)
+++
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
Wed Feb 2 06:17:44 2011
@@ -129,6 +129,12 @@ public class NhttpConstants {
/** Output stram of the message is set to this message context property */
public static final String NHTTP_OUTPUT_STREAM = "nhttp.output.stream";
+ /**
+ * A message context property indicating "TRUE", This will set on success
scenarios
+ */
+ public static final String HTTP_202_RECEIVED = "HTTP_202_RECEIVED";
+
+
/** This constant is used to plugin a custom WSDL processor for Get
requests*/
public static final String HTTP_GET_PROCESSOR = "httpGetProcessor";