You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/08/04 21:16:03 UTC

svn commit: r682468 - /synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java

Author: veithen
Date: Mon Aug  4 12:16:03 2008
New Revision: 682468

URL: http://svn.apache.org/viewvc?rev=682468&view=rev
Log:
NttpCoreNIOSender: Make sure that the sender is completely initialised when the init method returns. This was not the case because part of the initialisation was done in the thread executing the IO reactor. This change makes unit tests more predictable (see http://www.nabble.com/Synapse-transport-test-failure-td18809256.html).

Modified:
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java?rev=682468&r1=682467&r2=682468&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java Mon Aug  4 12:16:03 2008
@@ -106,26 +106,6 @@
         sslContext = getSSLContext(transportOut);
         sslIOSessionHandler = getSSLIOSessionHandler(transportOut);
 
-        // start the Sender in a new seperate thread
-        Thread t = new Thread(new Runnable() {
-            public void run() {
-                executeClientEngine();
-            }
-        }, "HttpCoreNIOSender");
-        t.start();
-        log.info((sslContext == null ? "HTTP" : "HTTPS") + " Sender starting");
-
-        // register with JMX
-        mbeanSupport
-            = new TransportMBeanSupport(this, "nio-http" + (sslContext == null ? "" : "s"));
-        mbeanSupport.register();
-    }
-
-    /**
-     * Configure and start the IOReactor
-     */
-    private void executeClientEngine() {
-
         HttpParams params = getClientParameters();
         try {
             ioReactor = new DefaultConnectingIOReactor(
@@ -148,18 +128,31 @@
         }
 
         handler = new ClientHandler(cfgCtx, params, metrics);
-        IOEventDispatch ioEventDispatch = getEventDispatch(
+        final IOEventDispatch ioEventDispatch = getEventDispatch(
             handler, sslContext, sslIOSessionHandler, params);
 
+        // start the Sender in a new seperate thread
+        Thread t = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    ioReactor.execute(ioEventDispatch);
+                } catch (InterruptedIOException ex) {
+                    log.fatal("Reactor Interrupted");
+                } catch (IOException e) {
+                    log.fatal("Encountered an I/O error: " + e.getMessage(), e);
+                }
+                log.info((sslContext == null ? "HTTP" : "HTTPS") + " Sender Shutdown");
+            }
+        }, "HttpCoreNIOSender");
+        t.start();
+        log.info((sslContext == null ? "HTTP" : "HTTPS") + " Sender starting");
+
+        // register with JMX
+        mbeanSupport
+            = new TransportMBeanSupport(this, "nio-http" + (sslContext == null ? "" : "s"));
+        mbeanSupport.register();
+        
         state = BaseConstants.STARTED;
-        try {
-            ioReactor.execute(ioEventDispatch);
-        } catch (InterruptedIOException ex) {
-            log.fatal("Reactor Interrupted");
-        } catch (IOException e) {
-            log.fatal("Encountered an I/O error: " + e.getMessage(), e);
-        }
-        log.info((sslContext == null ? "HTTP" : "HTTPS") + " Sender Shutdown");
     }
 
     /**