synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Asankha C. Perera" <asan...@wso2.com>
Subject Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging
Date Wed, 20 Jun 2007 17:53:01 GMT
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hi Oleg<br>
<br>
Sorry for the delay in response. I will run this through some load
tests and get back to you soon. I will be traveling next week, and thus
if I am unable to perform this on time, I will check if Ruwan would be
able to get back to you by early next week.<br>
<br>
thanks<br>
asankha<br>
<br>
Oleg Kalnichevski wrote:
<blockquote cite="mid1182245605.5453.29.camel@okhost" type="cite">
  <pre wrap="">Hi Asankha

I am submitting for your consideration a patch that upgrades Synapse
NHttp transport to HttpCore 4.0-ALPHA5-SNAPSHOT and adds some
incremental improvements to the I/O debug logging (such as prettier I/O
session logs and optional HTTP header logs)

All tests pass for me, but please do run a few stress tests to make sure
there are no regressions.

Provided everything goes well HttpCore 4.0-ALPHA5 release is expected
within the next two weeks.

Cheers

Oleg
  </pre>
  <pre wrap="">
<hr size="4" width="90%">
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java	(revision 548631)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/Axis2HttpRequest.java	(working copy)
@@ -26,17 +26,15 @@
 import org.apache.axis2.transport.MessageFormatter;
 import org.apache.axis2.transport.TransportUtils;
 import org.apache.http.*;
+import org.apache.http.message.BasicHttpEntityEnclosingRequest;
 import org.apache.http.protocol.HTTP;
 import org.apache.http.entity.BasicHttpEntity;
-import org.apache.http.message.HttpPost;
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.xml.stream.XMLStreamException;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.nio.channels.Pipe;
 import java.nio.channels.Channels;
 import java.nio.channels.ReadableByteChannel;
 import java.util.Map;
@@ -98,7 +96,9 @@
      * @return the HttpRequest to be sent out
      */
     public HttpRequest getRequest() throws IOException {
-        HttpPost httpRequest = new HttpPost(epr.getAddress());
+        HttpEntityEnclosingRequest httpRequest = new BasicHttpEntityEnclosingRequest(
+                "POST", 
+                epr.getAddress());
         httpRequest.setEntity(new BasicHttpEntity());
 
         // set any transport headers
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpClientHandler.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpClientHandler.java	(revision
548631)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpClientHandler.java	(working
copy)
@@ -22,6 +22,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.http.Header;
 import org.apache.http.HttpException;
 import org.apache.http.HttpResponse;
 import org.apache.http.nio.ContentDecoder;
@@ -36,6 +37,7 @@
 public class LoggingNHttpClientHandler implements NHttpClientHandler {
 
     private final Log log;
+    private final Log headerlog;
     private final NHttpClientHandler handler;
     
     public LoggingNHttpClientHandler(final NHttpClientHandler handler) {
@@ -45,6 +47,7 @@
         }
         this.handler = handler;
         this.log = LogFactory.getLog(handler.getClass());
+        this.headerlog = LogFactory.getLog("org.apache.axis2.transport.nhttp.headers");
     }
     
     public void connected(final NHttpClientConnection conn, final Object attachment) {
@@ -89,11 +92,18 @@
     }
 
     public void responseReceived(final NHttpClientConnection conn) {
+        HttpResponse response = conn.getHttpResponse();
         if (this.log.isDebugEnabled()) {
-            HttpResponse response = conn.getHttpResponse();
             this.log.debug("HTTP connection " + conn + ": " + response.getStatusLine());
         }
         this.handler.responseReceived(conn);
+        if (this.headerlog.isDebugEnabled()) {
+            this.headerlog.debug("&lt;&lt; " + response.getStatusLine().toString());
+            Header[] headers = response.getAllHeaders();
+            for (int i = 0; i &lt; headers.length; i++) {
+                this.headerlog.debug("&lt;&lt; " + headers[i].toString());
+            }
+        }
     }
 
     public void inputReady(final NHttpClientConnection conn, final ContentDecoder decoder)
{
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/SSLServerIOEventDispatch.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/SSLServerIOEventDispatch.java	(revision
548631)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/SSLServerIOEventDispatch.java	(working
copy)
@@ -31,6 +31,7 @@
 import org.apache.http.nio.NHttpServiceHandler;
 import org.apache.http.nio.reactor.IOEventDispatch;
 import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.nio.util.HeapByteBufferAllocator;
 import org.apache.http.params.HttpParams;
 
 public class SSLServerIOEventDispatch implements IOEventDispatch {
@@ -81,6 +82,7 @@
         DefaultNHttpServerConnection conn = new DefaultNHttpServerConnection(
                 new LoggingIOSession(sslSession), 
                 new DefaultHttpRequestFactory(),
+                new HeapByteBufferAllocator(),
                 this.params); 
         
         session.setAttribute(NHTTP_CONN, conn);
@@ -89,7 +91,7 @@
         this.handler.connected(conn);
 
         try {
-            sslSession.initialize(SSLMode.SERVER, this.params);
+            sslSession.bind(SSLMode.SERVER, this.params);
         } catch (SSLException ex) {
             this.handler.exception(conn, ex);
             sslSession.shutdown();
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/PlainServerIOEventDispatch.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/PlainServerIOEventDispatch.java	(revision
548631)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/PlainServerIOEventDispatch.java	(working
copy)
@@ -23,6 +23,7 @@
 import org.apache.http.nio.NHttpServiceHandler;
 import org.apache.http.nio.reactor.IOEventDispatch;
 import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.nio.util.HeapByteBufferAllocator;
 import org.apache.http.params.HttpParams;
 
 public class PlainServerIOEventDispatch implements IOEventDispatch {
@@ -47,9 +48,10 @@
     
     public void connected(final IOSession session) {
         // Decorate I/O session with logging capabilities
-        DefaultNHttpServerConnection conn = new DefaultNHttpServerConnection(
+        LoggingNHttpServerConnection conn = new LoggingNHttpServerConnection(
                 new LoggingIOSession(session), 
                 new DefaultHttpRequestFactory(),
+                new HeapByteBufferAllocator(),
                 this.params); 
         session.setAttribute(NHTTP_CONN, conn);
         this.handler.connected(conn);
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/SSLClientIOEventDispatch.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/SSLClientIOEventDispatch.java	(revision
548631)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/SSLClientIOEventDispatch.java	(working
copy)
@@ -31,6 +31,7 @@
 import org.apache.http.nio.NHttpClientHandler;
 import org.apache.http.nio.reactor.IOEventDispatch;
 import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.nio.util.HeapByteBufferAllocator;
 import org.apache.http.params.HttpParams;
 
 public class SSLClientIOEventDispatch implements IOEventDispatch {
@@ -81,6 +82,7 @@
         DefaultNHttpClientConnection conn = new DefaultNHttpClientConnection(
                 new LoggingIOSession(sslSession), 
                 new DefaultHttpResponseFactory(),
+                new HeapByteBufferAllocator(),
                 this.params); 
         
         session.setAttribute(NHTTP_CONN, conn);
@@ -90,7 +92,7 @@
         this.handler.connected(conn, attachment);
 
         try {
-            sslSession.initialize(SSLMode.CLIENT, this.params);
+            sslSession.bind(SSLMode.CLIENT, this.params);
         } catch (SSLException ex) {
             this.handler.exception(conn, ex);
             sslSession.shutdown();
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpServerConnection.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpServerConnection.java	(revision
0)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpServerConnection.java	(revision
0)
@@ -0,0 +1,76 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   <a class="moz-txt-link-freetext" href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <a class="moz-txt-link-rfc2396E" href="http://www.apache.org/">&lt;http://www.apache.org/&gt;</a>.
+ *
+ */
+
+package org.apache.axis2.transport.nhttp;
+
+import java.io.IOException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.Header;
+import org.apache.http.HttpException;
+import org.apache.http.HttpRequestFactory;
+import org.apache.http.HttpResponse;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
+import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.nio.util.ByteBufferAllocator;
+import org.apache.http.params.HttpParams;
+
+public class LoggingNHttpServerConnection extends DefaultNHttpServerConnection {
+
+    private final Log log;
+    private final Log headerlog;
+    
+    public LoggingNHttpServerConnection(
+            final IOSession session,
+            final HttpRequestFactory requestFactory,
+            final ByteBufferAllocator allocator,
+            final HttpParams params) {
+        super(session, requestFactory, allocator, params);
+        this.log = LogFactory.getLog(DefaultNHttpServerConnection.class);
+        this.headerlog = LogFactory.getLog("org.apache.axis2.transport.nhttp.headers");
+    }
+
+    public void submitResponse(final HttpResponse response) throws IOException, HttpException
{
+        if (this.log.isDebugEnabled()) {
+            this.log.debug("HTTP connection " + this + ": "  + response.getStatusLine().toString());
+        }
+        super.submitResponse(response);
+        if (this.headerlog.isDebugEnabled()) {
+            this.headerlog.debug("&lt;&lt; " + response.getStatusLine().toString());
+            Header[] headers = response.getAllHeaders();
+            for (int i = 0; i &lt; headers.length; i++) {
+                this.headerlog.debug("&lt;&lt; " + headers[i].toString());
+            }
+        }
+    }
+    
+}
\ No newline at end of file

Property changes on: modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpServerConnection.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:keywords
   + Date Author Id Revision HeadURL
Name: svn:eol-style
   + native

Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientHandler.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientHandler.java	(revision 548631)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/ClientHandler.java	(working copy)
@@ -23,6 +23,7 @@
 import org.apache.http.nio.ContentDecoder;
 import org.apache.http.nio.ContentEncoder;
 import org.apache.http.params.HttpParams;
+import org.apache.http.params.HttpParamsLinker;
 import org.apache.http.*;
 import org.apache.http.entity.BasicHttpEntity;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
@@ -30,7 +31,6 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 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.axis2.description.WSDL2Constants;
@@ -124,7 +124,7 @@
             context.setAttribute(REQUEST_SOURCE_CHANNEL, axis2Req.getSourceChannel());
 
             HttpRequest request = axis2Req.getRequest();
-            request.getParams().setDefaults(this.params);
+            HttpParamsLinker.link(request, this.params);
             this.httpProcessor.process(request, context);
 
             conn.submitRequest(request);
@@ -158,7 +158,7 @@
             context.setAttribute(REQUEST_SOURCE_CHANNEL, axis2Req.getSourceChannel());
 
             HttpRequest request = axis2Req.getRequest();
-            request.getParams().setDefaults(this.params);
+            HttpParamsLinker.link(request, this.params);
             this.httpProcessor.process(request, context);
 
             conn.submitRequest(request);
@@ -243,7 +243,6 @@
      */
     public void outputReady(final NHttpClientConnection conn, final ContentEncoder encoder)
{
         HttpContext context = conn.getContext();
-        HttpResponse response = conn.getHttpResponse();
 
         ReadableByteChannel source = (ReadableByteChannel) context.getAttribute(REQUEST_SOURCE_CHANNEL);
         ByteBuffer outbuf = (ByteBuffer) context.getAttribute(RESPONSE_BUFFER);
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/PlainClientIOEventDispatch.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/PlainClientIOEventDispatch.java	(revision
548631)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/PlainClientIOEventDispatch.java	(working
copy)
@@ -23,6 +23,7 @@
 import org.apache.http.nio.NHttpClientHandler;
 import org.apache.http.nio.reactor.IOEventDispatch;
 import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.nio.util.HeapByteBufferAllocator;
 import org.apache.http.params.HttpParams;
 
 public class PlainClientIOEventDispatch implements IOEventDispatch {
@@ -47,9 +48,10 @@
     
     public void connected(final IOSession session) {
         // Decorate I/O session with logging capabilities
-        DefaultNHttpClientConnection conn = new DefaultNHttpClientConnection(
+        LoggingNHttpClientConnection conn = new LoggingNHttpClientConnection(
                 new LoggingIOSession(session), 
                 new DefaultHttpResponseFactory(),
+                new HeapByteBufferAllocator(),
                 this.params); 
         session.setAttribute(NHTTP_CONN, conn);
         
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingIOSession.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingIOSession.java	(revision 548631)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingIOSession.java	(working copy)
@@ -22,6 +22,7 @@
 import java.net.SocketAddress;
 import java.nio.ByteBuffer;
 import java.nio.channels.ByteChannel;
+import java.nio.channels.SelectionKey;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -68,10 +69,29 @@
         return this.session.getEventMask();
     }
 
+    private static String formatOps(int ops) {
+        StringBuffer buffer = new StringBuffer(6);
+        buffer.append('[');
+        if ((ops &amp; SelectionKey.OP_READ) &gt; 0) {
+            buffer.append('r');
+        }
+        if ((ops &amp; SelectionKey.OP_WRITE) &gt; 0) {
+            buffer.append('w');
+        }
+        if ((ops &amp; SelectionKey.OP_ACCEPT) &gt; 0) {
+            buffer.append('a');
+        }
+        if ((ops &amp; SelectionKey.OP_CONNECT) &gt; 0) {
+            buffer.append('c');
+        }
+        buffer.append(']');
+        return buffer.toString();
+    }
+    
     public void setEventMask(int ops) {
         if (this.log.isDebugEnabled()) {
             this.log.debug("I/O session " + this.id + " " + this.session + ": Set event mask
" 
-                    + ops);
+                    + formatOps(ops));
         }
         this.session.setEventMask(ops);
     }
@@ -79,7 +99,7 @@
     public void setEvent(int op) {
         if (this.log.isDebugEnabled()) {
             this.log.debug("I/O session " + this.id + " " + this.session + ": Set event "

-                    + op);
+                    + formatOps(op));
         }
         this.session.setEvent(op);
     }
@@ -87,7 +107,7 @@
     public void clearEvent(int op) {
         if (this.log.isDebugEnabled()) {
             this.log.debug("I/O session " + this.id + " " + this.session + ": Clear event
" 
-                    + op);
+                    + formatOps(op));
         }
         this.session.clearEvent(op);
     }
@@ -103,6 +123,13 @@
         return this.session.isClosed();
     }
 
+    public void shutdown() {
+        if (this.log.isDebugEnabled()) {
+            this.log.debug("I/O session " + this.id + " " + this.session + ": Shutdown");
+        }
+        this.session.shutdown();
+    }
+
     public int getSocketTimeout() {
         return this.session.getSocketTimeout();
     }
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpServiceHandler.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpServiceHandler.java	(revision
548631)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpServiceHandler.java	(working
copy)
@@ -22,6 +22,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.http.Header;
 import org.apache.http.HttpException;
 import org.apache.http.HttpRequest;
 import org.apache.http.nio.ContentDecoder;
@@ -36,6 +37,7 @@
 public class LoggingNHttpServiceHandler implements NHttpServiceHandler {
 
     private final Log log;
+    private final Log headerlog;
     private final NHttpServiceHandler handler;
     
     public LoggingNHttpServiceHandler(final NHttpServiceHandler handler) {
@@ -45,6 +47,7 @@
         }
         this.handler = handler;
         this.log = LogFactory.getLog(handler.getClass());
+        this.headerlog = LogFactory.getLog("org.apache.axis2.transport.nhttp.headers");
     }
     
     public void connected(final NHttpServerConnection conn) {
@@ -62,31 +65,28 @@
     }
 
     public void exception(final NHttpServerConnection conn, final IOException ex) {
-        if (ex.getMessage().indexOf("Connection reset") != -1 ||
-            ex.getMessage().indexOf("forcibly closed")  != -1) {
-            this.log.warn("HTTP connection " + conn + ": " + ex.getMessage());
-        } else {
-            this.log.error("HTTP connection " + conn + ": " + ex.getMessage(), ex);
-        }
+        this.log.error("HTTP connection " + conn + ": " + ex.getMessage(), ex);
         this.handler.exception(conn, ex);
     }
 
     public void exception(final NHttpServerConnection conn, final HttpException ex) {
-        if (ex.getMessage().contains("Connection reset") ||
-            ex.getMessage().contains("forcibly closed")) {
-            this.log.warn("HTTP connection " + conn + ": " + ex.getMessage());
-        } else {
-            this.log.error("HTTP connection " + conn + ": " + ex.getMessage(), ex);
-        }
+        this.log.error("HTTP connection " + conn + ": " + ex.getMessage(), ex);
         this.handler.exception(conn, ex);
     }
 
     public void requestReceived(final NHttpServerConnection conn) {
+        HttpRequest request = conn.getHttpRequest();
         if (this.log.isDebugEnabled()) {
-            HttpRequest request = conn.getHttpRequest();
             this.log.debug("HTTP connection " + conn + ": " + request.getRequestLine());
         }
         this.handler.requestReceived(conn);
+        if (this.headerlog.isDebugEnabled()) {
+            this.headerlog.debug("&gt;&gt; " + request.getRequestLine().toString());
+            Header[] headers = request.getAllHeaders();
+            for (int i = 0; i &lt; headers.length; i++) {
+                this.headerlog.debug("&gt;&gt; " + headers[i].toString());
+            }
+        }
     }
 
     public void outputReady(final NHttpServerConnection conn, final ContentEncoder encoder)
{
Index: modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpClientConnection.java
===================================================================
--- modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpClientConnection.java	(revision
0)
+++ modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpClientConnection.java	(revision
0)
@@ -0,0 +1,76 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   <a class="moz-txt-link-freetext" href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <a class="moz-txt-link-rfc2396E" href="http://www.apache.org/">&lt;http://www.apache.org/&gt;</a>.
+ *
+ */
+
+package org.apache.axis2.transport.nhttp;
+
+import java.io.IOException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.Header;
+import org.apache.http.HttpException;
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponseFactory;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.nio.reactor.IOSession;
+import org.apache.http.nio.util.ByteBufferAllocator;
+import org.apache.http.params.HttpParams;
+
+public class LoggingNHttpClientConnection extends DefaultNHttpClientConnection {
+
+    private final Log log;
+    private final Log headerlog;
+    
+    public LoggingNHttpClientConnection(
+            final IOSession session,
+            final HttpResponseFactory responseFactory,
+            final ByteBufferAllocator allocator,
+            final HttpParams params) {
+        super(session, responseFactory, allocator, params);
+        this.log = LogFactory.getLog(DefaultNHttpClientConnection.class);
+        this.headerlog = LogFactory.getLog("org.apache.axis2.transport.nhttp.headers");
+    }
+
+    public void submitRequest(final HttpRequest request) throws IOException, HttpException
{
+        if (this.log.isDebugEnabled()) {
+            this.log.debug("HTTP connection " + this + ": "  + request.getRequestLine().toString());
+        }
+        super.submitRequest(request);
+        if (this.headerlog.isDebugEnabled()) {
+            this.headerlog.debug("&gt;&gt; " + request.getRequestLine().toString());
+            Header[] headers = request.getAllHeaders();
+            for (int i = 0; i &lt; headers.length; i++) {
+                this.headerlog.debug("&gt;&gt; " + headers[i].toString());
+            }
+        }
+    }
+    
+}
\ No newline at end of file

Property changes on: modules/nhttp/src/org/apache/axis2/transport/nhttp/LoggingNHttpClientConnection.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:keywords
   + Date Author Id Revision HeadURL
Name: svn:eol-style
   + native

Index: pom.xml
===================================================================
--- pom.xml	(revision 548631)
+++ pom.xml	(working copy)
@@ -306,7 +306,7 @@
 
             &lt;dependency&gt;
                 &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt;
-                &lt;artifactId&gt;jakarta-httpcore&lt;/artifactId&gt;
+                &lt;artifactId&gt;httpcore&lt;/artifactId&gt;
                 &lt;version&gt;${jakarta.httpcore.nio.version}&lt;/version&gt;
             &lt;/dependency&gt;
 
@@ -585,17 +585,17 @@
         &lt;!-- dependencies for nhttp transport --&gt;
         &lt;dependency&gt;
             &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt;
-            &lt;artifactId&gt;jakarta-httpcore&lt;/artifactId&gt;
+            &lt;artifactId&gt;httpcore&lt;/artifactId&gt;
             &lt;version&gt;${jakarta.httpcore.nio.version}&lt;/version&gt;
         &lt;/dependency&gt;
         &lt;dependency&gt;
             &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt;
-            &lt;artifactId&gt;jakarta-httpcore-nio&lt;/artifactId&gt;
+            &lt;artifactId&gt;httpcore-nio&lt;/artifactId&gt;
             &lt;version&gt;${jakarta.httpcore.nio.version}&lt;/version&gt;
         &lt;/dependency&gt;
         &lt;dependency&gt;
             &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt;
-            &lt;artifactId&gt;jakarta-httpcore-niossl&lt;/artifactId&gt;
+            &lt;artifactId&gt;httpcore-niossl&lt;/artifactId&gt;
             &lt;version&gt;${jakarta.httpcore.nio.version}&lt;/version&gt;
         &lt;/dependency&gt;
 
@@ -728,7 +728,7 @@
     &lt;properties&gt;
         &lt;!-- Synapse and related components --&gt;
         &lt;synapse.version&gt;1.0-RC2-SNAPSHOT&lt;/synapse.version&gt;
-        &lt;jakarta.httpcore.nio.version&gt;4.0-alpha4&lt;/jakarta.httpcore.nio.version&gt;
+        &lt;jakarta.httpcore.nio.version&gt;4.0-alpha5-SNAPSHOT&lt;/jakarta.httpcore.nio.version&gt;
 
         &lt;!-- Axis2 1.2 and its dependencies --&gt;
         &lt;axis2.version&gt;1.2&lt;/axis2.version&gt;

  </pre>
  <pre wrap="">
<hr size="4" width="90%">
---------------------------------------------------------------------
To unsubscribe, e-mail: <a class="moz-txt-link-abbreviated" href="mailto:synapse-dev-unsubscribe@ws.apache.org">synapse-dev-unsubscribe@ws.apache.org</a>
For additional commands, e-mail: <a class="moz-txt-link-abbreviated" href="mailto:synapse-dev-help@ws.apache.org">synapse-dev-help@ws.apache.org</a></pre>
</blockquote>
</body>
</html>

---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org


Mime
View raw message