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