You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2011/10/13 22:52:53 UTC

svn commit: r1183088 - /cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java

Author: dkulp
Date: Thu Oct 13 20:52:53 2011
New Revision: 1183088

URL: http://svn.apache.org/viewvc?rev=1183088&view=rev
Log:
If the workqueue for the http-conduit async calls is full, try to submit
it for a few seconds before just handling it synchronously.

Modified:
    cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java

Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?rev=1183088&r1=1183087&r2=1183088&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Thu Oct 13 20:52:53 2011
@@ -81,6 +81,7 @@ import org.apache.cxf.transport.https.Ce
 import org.apache.cxf.transport.https.CertConstraintsJaxBUtils;
 import org.apache.cxf.transport.https.HttpsURLConnectionFactory;
 import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
+import org.apache.cxf.workqueue.AutomaticWorkQueue;
 import org.apache.cxf.workqueue.WorkQueueManager;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 import org.apache.cxf.ws.policy.Assertor;
@@ -1504,20 +1505,21 @@ public class HTTPConduit 
                         }
                     }
                 };
-                Executor ex = outMessage.getExchange().get(Executor.class);
-                if (ex == null) {
-                    WorkQueueManager mgr = outMessage.getExchange().get(Bus.class)
-                        .getExtension(WorkQueueManager.class);
-                    ex = mgr.getNamedWorkQueue("http-conduit");
+                try {
+                    Executor ex = outMessage.getExchange().get(Executor.class);
                     if (ex == null) {
-                        ex = mgr.getAutomaticWorkQueue();
-                    }
-                } else {
-                    outMessage.getExchange().put(Executor.class.getName() 
+                        WorkQueueManager mgr = outMessage.getExchange().get(Bus.class)
+                            .getExtension(WorkQueueManager.class);
+                        AutomaticWorkQueue qu = mgr.getNamedWorkQueue("http-conduit");
+                        if (ex == null) {
+                            qu = mgr.getAutomaticWorkQueue();
+                        }
+                        qu.execute(runnable, 5000);
+                    } else {
+                        outMessage.getExchange().put(Executor.class.getName() 
                                                  + ".USING_SPECIFIED", Boolean.TRUE);
-                }
-                try {
-                    ex.execute(runnable);
+                        ex.execute(runnable);
+                    }
                 } catch (RejectedExecutionException rex) {
                     LOG.warning("EXECUTOR_FULL");
                     handleResponseInternal();