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/12/23 21:52:01 UTC
svn commit: r729107 - in /synapse/trunk/java: ./
modules/transports/src/main/java/org/apache/synapse/transport/nhttp/
Author: veithen
Date: Tue Dec 23 12:52:01 2008
New Revision: 729107
URL: http://svn.apache.org/viewvc?rev=729107&view=rev
Log:
SYNAPSE-479: In the NIO HTTP listener, only create an input buffer and ContentInputStream if the request has content (i.e. is not a GET request). As a side effect, this should make the transport work with httpcore 4.0-beta3.
Modified:
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/HttpCoreNIOSender.java
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
synapse/trunk/java/pom.xml
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=729107&r1=729106&r2=729107&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 Tue Dec 23 12:52:01 2008
@@ -57,6 +57,7 @@
import javax.net.ssl.SSLContext;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InterruptedIOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
@@ -455,9 +456,12 @@
handleException("General Error sending response message", e);
}
- try {
- worker.getIs().close();
- } catch (IOException ignore) {}
+ InputStream is = worker.getIs();
+ if (is != null) {
+ try {
+ is.close();
+ } catch (IOException ignore) {}
+ }
}
private void sendUsingOutputStream(MessageContext msgContext) throws AxisFault {
Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java?rev=729107&r1=729106&r2=729107&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerHandler.java Tue Dec 23 12:52:01 2008
@@ -46,6 +46,8 @@
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
/**
* The server connection handler. An instance of this class is used by each IOReactor, to
@@ -117,10 +119,19 @@
conn.getContext().setAttribute(NhttpConstants.REQUEST_READ, Boolean.FALSE);
try {
- ContentInputBuffer inputBuffer = new SharedInputBuffer(cfg.getBufferSize(), conn, allocator);
+ InputStream is;
+ // Only create an input buffer and ContentInputStream if the request has content
+ if (request instanceof HttpEntityEnclosingRequest) {
+ ContentInputBuffer inputBuffer = new SharedInputBuffer(cfg.getBufferSize(), conn, allocator);
+ context.setAttribute(REQUEST_SINK_BUFFER, inputBuffer);
+ is = new ContentInputStream(inputBuffer);
+ } else {
+ is = null;
+ }
+
ContentOutputBuffer outputBuffer = new SharedOutputBuffer(cfg.getBufferSize(), conn, allocator);
- context.setAttribute(REQUEST_SINK_BUFFER, inputBuffer);
context.setAttribute(RESPONSE_SOURCE_BUFFER, outputBuffer);
+ OutputStream os = new ContentOutputStream(outputBuffer);
// create the default response to this request
ProtocolVersion httpVersion = request.getRequestLine().getProtocolVersion();
@@ -138,8 +149,7 @@
// hand off processing of the request to a thread off the pool
workerPool.execute(
new ServerWorker(cfgCtx, conn, isHttps, metrics, this,
- request, new ContentInputStream(inputBuffer),
- response, new ContentOutputStream(outputBuffer)));
+ request, is, response, os));
} catch (Exception e) {
if (metrics != null) {
Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java?rev=729107&r1=729106&r2=729107&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java Tue Dec 23 12:52:01 2008
@@ -253,9 +253,11 @@
handleException("General Error sending response message", e);
}
- try {
- is.close();
- } catch (IOException ignore) {}
+ if (is != null) {
+ try {
+ is.close();
+ } catch (IOException ignore) {}
+ }
// make sure that the output stream is flushed and closed properly
try {
Modified: synapse/trunk/java/pom.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/pom.xml?rev=729107&r1=729106&r2=729107&view=diff
==============================================================================
--- synapse/trunk/java/pom.xml (original)
+++ synapse/trunk/java/pom.xml Tue Dec 23 12:52:01 2008
@@ -1168,7 +1168,7 @@
<properties>
<!-- Synapse and related components -->
<synapse.version>SNAPSHOT</synapse.version>
- <httpcore.nio.version>4.0-beta1</httpcore.nio.version>
+ <httpcore.nio.version>4.0-beta3</httpcore.nio.version>
<commons.dbcp.version>1.2.2</commons.dbcp.version>
<commons.pool.version>1.3</commons.pool.version>
<commons.vfs.version>1.1-587797</commons.vfs.version>