Asankha et al,

There has been a significant number of changes and improvements in
HttpCore in past couple of months. The latest HttpCore snapshot includes
a fix for a bug [1] that I personally consider quite severe. Overall
there has been a number of important improvements in NIO and NIOSSL
code, which I think should be incorporated into the next release of
Synapse.  

I am attaching a patch that upgrades Synapse to HttpCore
4.0-alpha6-SNAPSHOT. All unit tests pass for me. Nonetheless it would be
really great if you could do some more testing (especially for the SSL
transport) and report regressions and bugs if found.

I will be on vacation from Sept 22nd to Sept 29th. I will start the
process as soon as I am back. So, the official 4.0-alpha6 release can be
expected in the first week of October.

Cheers

Oleg 

[1] https://issues.apache.org/jira/browse/HTTPCORE-114
Index: modules/transports/src/main/java/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
===================================================================
--- modules/transports/src/main/java/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java	(revision 577183)
+++ modules/transports/src/main/java/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java	(working copy)
@@ -28,7 +28,6 @@
 import java.util.Map;
 
 import javax.net.ssl.SSLContext;
-import javax.xml.stream.XMLStreamException;
 
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axis2.AxisFault;
@@ -40,7 +39,6 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.TransportOutDescription;
-import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.engine.MessageReceiver;
 import org.apache.axis2.handlers.AbstractHandler;
 import org.apache.axis2.transport.OutTransportInfo;
@@ -249,8 +247,8 @@
             String headerName = (String) iter.next();
             if (HTTP.CONN_DIRECTIVE.equalsIgnoreCase(headerName) ||
                 HTTP.TRANSFER_ENCODING.equalsIgnoreCase(headerName) ||
-                HTTP.DATE_DIRECTIVE.equalsIgnoreCase(headerName) ||
-                HTTP.SERVER_DIRECTIVE.equalsIgnoreCase(headerName) ||
+                HTTP.DATE_HEADER.equalsIgnoreCase(headerName) ||
+                HTTP.SERVER_HEADER.equalsIgnoreCase(headerName) ||
                 HTTP.CONTENT_TYPE.equalsIgnoreCase(headerName) ||
                 HTTP.CONTENT_LEN.equalsIgnoreCase(headerName) ||
                 HTTP.USER_AGENT.equalsIgnoreCase(headerName)) {
Index: modules/transports/src/main/java/org/apache/axis2/transport/nhttp/ServerHandler.java
===================================================================
--- modules/transports/src/main/java/org/apache/axis2/transport/nhttp/ServerHandler.java	(revision 577183)
+++ modules/transports/src/main/java/org/apache/axis2/transport/nhttp/ServerHandler.java	(working copy)
@@ -20,7 +20,6 @@
 
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.transport.nhttp.util.PipeImpl;
-import org.apache.axis2.transport.nhttp.util.NativeWorkerPool;
 import org.apache.axis2.transport.nhttp.util.WorkerPool;
 import org.apache.axis2.transport.nhttp.util.WorkerPoolFactory;
 import org.apache.http.*;
@@ -104,7 +103,7 @@
 
         HttpContext context = conn.getContext();
         HttpRequest request = conn.getHttpRequest();
-        context.setAttribute(HttpContext.HTTP_REQUEST, request);
+        context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
 
         // allocate temporary buffers to process this request
         context.setAttribute(REQUEST_BUFFER, ByteBuffer.allocate(cfg.getBufferZise()));
@@ -117,7 +116,7 @@
             context.setAttribute(RESPONSE_SOURCE_CHANNEL, responsePipe.source());
 
             // create the default response to this request
-            HttpVersion httpVersion = request.getRequestLine().getHttpVersion();
+            ProtocolVersion httpVersion = request.getRequestLine().getProtocolVersion();
             HttpResponse response = responseFactory.newHttpResponse(
                 httpVersion, HttpStatus.SC_OK, context);
             response.setParams(this.params);
@@ -233,7 +232,8 @@
      * @param conn the connection being processed
      */
     public void timeout(final NHttpServerConnection conn) {
-        HttpRequest req = (HttpRequest) conn.getContext().getAttribute(HttpContext.HTTP_REQUEST);
+        HttpRequest req = (HttpRequest) conn.getContext().getAttribute(
+                ExecutionContext.HTTP_REQUEST);
         if (req != null) {
             if (log.isDebugEnabled()) {
                 log.debug("Connection Timeout for request to : " + req.getRequestLine().getUri() +
@@ -261,7 +261,7 @@
     public void exception(final NHttpServerConnection conn, final HttpException e) {
         HttpContext context = conn.getContext();
         HttpRequest request = conn.getHttpRequest();
-        HttpVersion ver = request.getRequestLine().getHttpVersion();
+        ProtocolVersion ver = request.getRequestLine().getProtocolVersion();
         HttpResponse response = responseFactory.newHttpResponse(
             ver, HttpStatus.SC_BAD_REQUEST, context);
         byte[] msg = EncodingUtils.getAsciiBytes("Malformed HTTP request: " + e.getMessage());
Index: modules/transports/src/main/java/org/apache/axis2/transport/nhttp/ClientHandler.java
===================================================================
--- modules/transports/src/main/java/org/apache/axis2/transport/nhttp/ClientHandler.java	(revision 577183)
+++ modules/transports/src/main/java/org/apache/axis2/transport/nhttp/ClientHandler.java	(working copy)
@@ -117,8 +117,8 @@
         try {
             HttpContext context = conn.getContext();
 
-            context.setAttribute(HttpExecutionContext.HTTP_CONNECTION, conn);
-            context.setAttribute(HttpExecutionContext.HTTP_TARGET_HOST, axis2Req.getHttpHost());
+            context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
+            context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, axis2Req.getHttpHost());
 
             context.setAttribute(OUTGOING_MESSAGE_CONTEXT, axis2Req.getMsgContext());
             context.setAttribute(REQUEST_SOURCE_CHANNEL, axis2Req.getSourceChannel());
@@ -128,7 +128,7 @@
             this.httpProcessor.process(request, context);
 
             conn.submitRequest(request);
-            context.setAttribute(HttpExecutionContext.HTTP_REQUEST, request);
+            context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
 
         } catch (IOException e) {
             handleException("I/O Error : " + e.getMessage(), e, conn);
@@ -147,8 +147,8 @@
             HttpContext context = conn.getContext();
             Axis2HttpRequest axis2Req = (Axis2HttpRequest) attachment;
 
-            context.setAttribute(HttpExecutionContext.HTTP_CONNECTION, conn);
-            context.setAttribute(HttpExecutionContext.HTTP_TARGET_HOST, axis2Req.getHttpHost());
+            context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
+            context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, axis2Req.getHttpHost());
 
             // allocate temporary buffers to process this request
             context.setAttribute(REQUEST_BUFFER, ByteBuffer.allocate(cfg.getBufferZise()));
@@ -162,7 +162,7 @@
             this.httpProcessor.process(request, context);
 
             conn.submitRequest(request);
-            context.setAttribute(HttpExecutionContext.HTTP_REQUEST, request);
+            context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
 
         } catch (IOException e) {
             handleException("I/O Error : " + e.getMessage(), e, conn);
@@ -359,11 +359,11 @@
             context.setAttribute(RESPONSE_SINK_CHANNEL, responsePipe.sink());
 
             BasicHttpEntity entity = new BasicHttpEntity();
-            if (response.getStatusLine().getHttpVersion().greaterEquals(HttpVersion.HTTP_1_1)) {
+            if (response.getStatusLine().getProtocolVersion().greaterEquals(HttpVersion.HTTP_1_1)) {
                 entity.setChunked(true);
             }
             response.setEntity(entity);
-            context.setAttribute(HttpContext.HTTP_RESPONSE, response);
+            context.setAttribute(ExecutionContext.HTTP_RESPONSE, response);
 
             workerPool.execute(
                 new ClientWorker(cfgCtx, Channels.newInputStream(responsePipe.source()), response,
Index: modules/transports/src/main/java/org/apache/axis2/transport/nhttp/LoggingIOSession.java
===================================================================
--- modules/transports/src/main/java/org/apache/axis2/transport/nhttp/LoggingIOSession.java	(revision 577183)
+++ modules/transports/src/main/java/org/apache/axis2/transport/nhttp/LoggingIOSession.java	(working copy)
@@ -53,6 +53,10 @@
         this.log = LogFactory.getLog(session.getClass());
     }
 
+    public int getStatus() {
+        return this.session.getStatus();
+    }
+
     public ByteChannel channel() {
         return this.channel;
     }
Index: modules/transports/src/main/java/org/apache/axis2/transport/nhttp/ConnectionPool.java
===================================================================
--- modules/transports/src/main/java/org/apache/axis2/transport/nhttp/ConnectionPool.java	(revision 577183)
+++ modules/transports/src/main/java/org/apache/axis2/transport/nhttp/ConnectionPool.java	(working copy)
@@ -19,7 +19,7 @@
 package org.apache.axis2.transport.nhttp;
 
 import org.apache.http.nio.NHttpClientConnection;
-import org.apache.http.protocol.HttpExecutionContext;
+import org.apache.http.protocol.ExecutionContext;
 import org.apache.http.HttpHost;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -78,7 +78,7 @@
     public static void release(NHttpClientConnection conn) {
 
         HttpHost host = (HttpHost) conn.getContext().getAttribute(
-            HttpExecutionContext.HTTP_TARGET_HOST);
+            ExecutionContext.HTTP_TARGET_HOST);
         String key = host.getHostName() + ":" + Integer.toString(host.getPort());
 
         List connections = (List) connMap.get(key);
Index: pom.xml
===================================================================
--- pom.xml	(revision 577183)
+++ pom.xml	(working copy)
@@ -870,7 +870,7 @@
     <properties>
         <!-- Synapse and related components -->
         <synapse.version>SNAPSHOT</synapse.version>
-        <httpcore.nio.version>4.0-alpha5</httpcore.nio.version>
+        <httpcore.nio.version>4.0-alpha6-SNAPSHOT</httpcore.nio.version>
         <commons.vfs.version>1.0</commons.vfs.version>
         <commons.net.version>1.4.1</commons.net.version>
         <jsch.version>0.1.31</jsch.version>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to