synapse-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ruwan Linton" <ruwan.lin...@gmail.com>
Subject Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging
Date Thu, 21 Jun 2007 03:26:11 GMT
Yes asankha,

I will be able to run some load tests and check this.

Oleg, I will get back to you ASAP,

Thanks,
Ruwan.

On 6/20/07, Asankha C. Perera <asankha@wso2.com> wrote:
>
>  Hi Oleg
>
> 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.
>
> thanks
> asankha
>
> Oleg Kalnichevski wrote:
>
> 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
>
> ------------------------------
>
> 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("<< " + response.getStatusLine().toString());
> +            Header[] headers = response.getAllHeaders();
> +            for (int i = 0; i < headers.length; i++) {
> +                this.headerlog.debug("<< " + 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
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * 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
> + * <http://www.apache.org/> <http://www.apache.org/>.
> + *
> + */
> +
> +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("<< " + response.getStatusLine().toString());
> +            Header[] headers = response.getAllHeaders();
> +            for (int i = 0; i < headers.length; i++) {
> +                this.headerlog.debug("<< " + 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 & SelectionKey.OP_READ) > 0) {
> +            buffer.append('r');
> +        }
> +        if ((ops & SelectionKey.OP_WRITE) > 0) {
> +            buffer.append('w');
> +        }
> +        if ((ops & SelectionKey.OP_ACCEPT) > 0) {
> +            buffer.append('a');
> +        }
> +        if ((ops & SelectionKey.OP_CONNECT) > 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(">> " + request.getRequestLine().toString());
> +            Header[] headers = request.getAllHeaders();
> +            for (int i = 0; i < headers.length; i++) {
> +                this.headerlog.debug(">> " + 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
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * 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
> + * <http://www.apache.org/> <http://www.apache.org/>.
> + *
> + */
> +
> +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(">> " + request.getRequestLine().toString());
> +            Header[] headers = request.getAllHeaders();
> +            for (int i = 0; i < headers.length; i++) {
> +                this.headerlog.debug(">> " + 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 @@
>
>              <dependency>
>                  <groupId>org.apache.httpcomponents</groupId>
> -                <artifactId>jakarta-httpcore</artifactId>
> +                <artifactId>httpcore</artifactId>
>                  <version>${jakarta.httpcore.nio.version}</version>
>              </dependency>
>
> @@ -585,17 +585,17 @@
>          <!-- dependencies for nhttp transport -->
>          <dependency>
>              <groupId>org.apache.httpcomponents</groupId>
> -            <artifactId>jakarta-httpcore</artifactId>
> +            <artifactId>httpcore</artifactId>
>              <version>${jakarta.httpcore.nio.version}</version>
>          </dependency>
>          <dependency>
>              <groupId>org.apache.httpcomponents</groupId>
> -            <artifactId>jakarta-httpcore-nio</artifactId>
> +            <artifactId>httpcore-nio</artifactId>
>              <version>${jakarta.httpcore.nio.version}</version>
>          </dependency>
>          <dependency>
>              <groupId>org.apache.httpcomponents</groupId>
> -            <artifactId>jakarta-httpcore-niossl</artifactId>
> +            <artifactId>httpcore-niossl</artifactId>
>              <version>${jakarta.httpcore.nio.version}</version>
>          </dependency>
>
> @@ -728,7 +728,7 @@
>      <properties>
>          <!-- Synapse and related components -->
>          <synapse.version>1.0-RC2-SNAPSHOT</synapse.version>
> -        <jakarta.httpcore.nio.version>4.0-alpha4</jakarta.httpcore.nio.version>
> +        <jakarta.httpcore.nio.version>4.0-alpha5-SNAPSHOT</jakarta.httpcore.nio.version>
>
>          <!-- Axis2 1.2 and its dependencies -->
>          <axis2.version>1.2</axis2.version>
>
>   ------------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: synapse-dev-help@ws.apache.org
>
>  --------------------------------------------------------------------- To
> unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org For additional
> commands, e-mail: synapse-dev-help@ws.apache.org




-- 
Ruwan Linton
http://www.wso2.org - "Oxygenating the Web Services Platform"

Mime
View raw message