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");
     }
 
     /**


Reply via email to