You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by na...@apache.org on 2006/11/17 15:22:13 UTC

svn commit: r476149 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2: context/MessageContext.java engine/AxisEngine.java util/CallbackReceiver.java

Author: nagy
Date: Fri Nov 17 06:22:12 2006
New Revision: 476149

URL: http://svn.apache.org/viewvc?view=rev&rev=476149
Log:
Ported r473071 (Fixed problem with a requester that utilized an async callback for req/rsp hanging if transmission of the request failed.)

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java?view=diff&rev=476149&r1=476148&r2=476149
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java Fri Nov 17 06:22:12 2006
@@ -123,6 +123,14 @@
     public static final String TRANSPORT_NON_BLOCKING = "transportNonBlocking";
 
     /**
+     * This property allows someone (e.g. RM) to disable an async callback from
+     * being invoked if a fault occurs during message transmission.  If this is
+     * not set, it can be assumed that the fault will be delivered via
+     * Callback.onError(...).
+     */
+    public static final String DISABLE_ASYNC_CALLBACK_ON_TRANSPORT_ERROR = "disableTransmissionErrorCallback";
+
+    /**
      * Field processingFault
      */
     private boolean processingFault;

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java?view=diff&rev=476149&r1=476148&r2=476149
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java Fri Nov 17 06:22:12 2006
@@ -617,7 +617,23 @@
             try {
                 sender.invoke(msgctx);
             } catch (Exception e) {
-                log.info(e.getMessage());
+              log.info(e.getMessage());
+              if (msgctx.getProperty(MessageContext.DISABLE_ASYNC_CALLBACK_ON_TRANSPORT_ERROR) == null)
+              {
+                AxisOperation axisOperation = msgctx.getAxisOperation();
+                if (axisOperation != null)
+                {
+                  MessageReceiver msgReceiver = axisOperation.getMessageReceiver();
+                  if ((msgReceiver != null) && (msgReceiver instanceof CallbackReceiver))
+                  {
+                    Callback callback = ((CallbackReceiver)msgReceiver).lookupCallback(msgctx.getMessageID());
+                    if (callback != null)
+                    {
+                      callback.onError(e);
+                    }
+                  }
+                }
+              }
             }
         }
     }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java?view=diff&rev=476149&r1=476148&r2=476149
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java Fri Nov 17 06:22:12 2006
@@ -44,6 +44,11 @@
         callbackStore.put(MsgID, callback);
     }
 
+    public Callback lookupCallback(String msgID)
+    {
+      return (Callback)callbackStore.get(msgID);
+    }
+
     public void receive(MessageContext messageCtx) throws AxisFault {
         RelatesTo relatesTO = messageCtx.getOptions().getRelatesTo();
         if(relatesTO == null){



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org