You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by Oleg Kalnichevski <ol...@apache.org> on 2007/06/19 11:33:25 UTC

[PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

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

Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Paul Fremantle <pz...@gmail.com>.
Thanks!!!!

Paul

On 6/19/07, Oleg Kalnichevski <ol...@apache.org> 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
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: synapse-dev-help@ws.apache.org
>
>


-- 
Paul Fremantle
Co-Founder and VP of Technical Sales, WSO2
OASIS WS-RX TC Co-chair

blog: http://pzf.fremantle.org
paul@wso2.com

"Oxygenating the Web Service Platform", www.wso2.com

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


Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Davanum Srinivas <da...@gmail.com>.
Perfect! thanks.

-- dims

On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> On Mon, 2007-06-25 at 09:39 -0400, Davanum Srinivas wrote:
> > Sounds good. Any ETA on HttpCore 4.0a5?
> >
>
> It is essentially just a matter of calling a release vote. But given all
> the mess currently going on in Jakarta getting releases out the door in
> a timely manner was somewhat painful lately. Provided everything goes
> well, an official release sometime toward mid next week is quite likely.
>
> Cheers
>
> Oleg
>
> > thanks,
> > dims
> >
> > On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> > > On Mon, 2007-06-25 at 09:19 -0400, Davanum Srinivas wrote:
> > > > Ruwan,
> > > >
> > > > Can you please make appropriate changes in axis2 as well?
> > > >
> > > > thanks,
> > > > dims
> > > >
> > >
> > > Davanum,
> > >
> > > The process of upgrading Axis2 is going to be a little more complex
> > > because this would also require some tweaks changes in SimpleHttpServer,
> > > which is also dependent on HttpCore.
> > >
> > > I'll submit a patch for Axis2 upgrading both the 'simple' and the NIO
> > > transports at the same time as soon as HttpCore 4.0a5 is officially out.
> > >
> > > Does this work for you?
> > >
> > > Oleg
> > >
> > >
> > > > On 6/25/07, Ruwan Linton <ru...@gmail.com> wrote:
> > > > >
> > > > >
> > > > > On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> > > > > > On Mon, 2007-06-25 at 11:44 +0530, Ruwan Linton wrote:
> > > > > > > Hi Oleg,
> > > > > > >
> > > > > > > I am done with the performance tests. I think now synapse is a little
> > > > > > > bit faster than earlier.
> > > > > > >
> > > > > > > No issues with the new version and I have applied the patch.
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Ruwan.
> > > > > > >
> > > > > >
> > > > > > Great! Many thanks, Ruwan. We will go ahead with the release.
> > > > > >
> > > > >
> > > > > You are more than welcome. Congratulations for the coming release.
> > > > >
> > > > > Ruwan.
> > > > >
> > > > > > Cheers
> > > > > >
> > > > > > Oleg
> > > > > >
> > > > > > > On 6/21/07, Oleg Kalnichevski < olegk@apache.org> wrote:
> > > > > > >         On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
> > > > > > >         > Yes asankha,
> > > > > > >         >
> > > > > > >         > I will be able to run some load tests and check this.
> > > > > > >         >
> > > > > > >         > Oleg, I will get back to you ASAP,
> > > > > > >         >
> > > > > > >         > Thanks,
> > > > > > >         > Ruwan.
> > > > > > >         >
> > > > > > >
> > > > > > >         Take it easy, guys. The release can wait.
> > > > > > >
> > > > > > >         Oleg
> > > > > > >
> > > > > > >         > On 6/20/07, Asankha C. Perera <as...@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/>.
> > > > > > >         >         > + *
> > > > > > >         >         >
> > > > > > >         >         > + */
> > > > > > >         >         > +
> > > > > > >         >         > +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 = hand
> > > > > ...
> > > > >
> > > > > [Message clipped]
> > > >
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > 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
>
>


-- 
Davanum Srinivas :: http://davanum.wordpress.com

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


Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Mon, 2007-06-25 at 09:39 -0400, Davanum Srinivas wrote:
> Sounds good. Any ETA on HttpCore 4.0a5?
> 

It is essentially just a matter of calling a release vote. But given all
the mess currently going on in Jakarta getting releases out the door in
a timely manner was somewhat painful lately. Provided everything goes
well, an official release sometime toward mid next week is quite likely.

Cheers

Oleg

> thanks,
> dims
> 
> On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> > On Mon, 2007-06-25 at 09:19 -0400, Davanum Srinivas wrote:
> > > Ruwan,
> > >
> > > Can you please make appropriate changes in axis2 as well?
> > >
> > > thanks,
> > > dims
> > >
> >
> > Davanum,
> >
> > The process of upgrading Axis2 is going to be a little more complex
> > because this would also require some tweaks changes in SimpleHttpServer,
> > which is also dependent on HttpCore.
> >
> > I'll submit a patch for Axis2 upgrading both the 'simple' and the NIO
> > transports at the same time as soon as HttpCore 4.0a5 is officially out.
> >
> > Does this work for you?
> >
> > Oleg
> >
> >
> > > On 6/25/07, Ruwan Linton <ru...@gmail.com> wrote:
> > > >
> > > >
> > > > On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> > > > > On Mon, 2007-06-25 at 11:44 +0530, Ruwan Linton wrote:
> > > > > > Hi Oleg,
> > > > > >
> > > > > > I am done with the performance tests. I think now synapse is a little
> > > > > > bit faster than earlier.
> > > > > >
> > > > > > No issues with the new version and I have applied the patch.
> > > > > >
> > > > > > Thanks,
> > > > > > Ruwan.
> > > > > >
> > > > >
> > > > > Great! Many thanks, Ruwan. We will go ahead with the release.
> > > > >
> > > >
> > > > You are more than welcome. Congratulations for the coming release.
> > > >
> > > > Ruwan.
> > > >
> > > > > Cheers
> > > > >
> > > > > Oleg
> > > > >
> > > > > > On 6/21/07, Oleg Kalnichevski < olegk@apache.org> wrote:
> > > > > >         On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
> > > > > >         > Yes asankha,
> > > > > >         >
> > > > > >         > I will be able to run some load tests and check this.
> > > > > >         >
> > > > > >         > Oleg, I will get back to you ASAP,
> > > > > >         >
> > > > > >         > Thanks,
> > > > > >         > Ruwan.
> > > > > >         >
> > > > > >
> > > > > >         Take it easy, guys. The release can wait.
> > > > > >
> > > > > >         Oleg
> > > > > >
> > > > > >         > On 6/20/07, Asankha C. Perera <as...@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/>.
> > > > > >         >         > + *
> > > > > >         >         >
> > > > > >         >         > + */
> > > > > >         >         > +
> > > > > >         >         > +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 = hand
> > > > ...
> > > >
> > > > [Message clipped]
> > >
> > >
> >
> >
> > ---------------------------------------------------------------------
> > 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


Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Davanum Srinivas <da...@gmail.com>.
Sounds good. Any ETA on HttpCore 4.0a5?

thanks,
dims

On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> On Mon, 2007-06-25 at 09:19 -0400, Davanum Srinivas wrote:
> > Ruwan,
> >
> > Can you please make appropriate changes in axis2 as well?
> >
> > thanks,
> > dims
> >
>
> Davanum,
>
> The process of upgrading Axis2 is going to be a little more complex
> because this would also require some tweaks changes in SimpleHttpServer,
> which is also dependent on HttpCore.
>
> I'll submit a patch for Axis2 upgrading both the 'simple' and the NIO
> transports at the same time as soon as HttpCore 4.0a5 is officially out.
>
> Does this work for you?
>
> Oleg
>
>
> > On 6/25/07, Ruwan Linton <ru...@gmail.com> wrote:
> > >
> > >
> > > On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> > > > On Mon, 2007-06-25 at 11:44 +0530, Ruwan Linton wrote:
> > > > > Hi Oleg,
> > > > >
> > > > > I am done with the performance tests. I think now synapse is a little
> > > > > bit faster than earlier.
> > > > >
> > > > > No issues with the new version and I have applied the patch.
> > > > >
> > > > > Thanks,
> > > > > Ruwan.
> > > > >
> > > >
> > > > Great! Many thanks, Ruwan. We will go ahead with the release.
> > > >
> > >
> > > You are more than welcome. Congratulations for the coming release.
> > >
> > > Ruwan.
> > >
> > > > Cheers
> > > >
> > > > Oleg
> > > >
> > > > > On 6/21/07, Oleg Kalnichevski < olegk@apache.org> wrote:
> > > > >         On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
> > > > >         > Yes asankha,
> > > > >         >
> > > > >         > I will be able to run some load tests and check this.
> > > > >         >
> > > > >         > Oleg, I will get back to you ASAP,
> > > > >         >
> > > > >         > Thanks,
> > > > >         > Ruwan.
> > > > >         >
> > > > >
> > > > >         Take it easy, guys. The release can wait.
> > > > >
> > > > >         Oleg
> > > > >
> > > > >         > On 6/20/07, Asankha C. Perera <as...@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/>.
> > > > >         >         > + *
> > > > >         >         >
> > > > >         >         > + */
> > > > >         >         > +
> > > > >         >         > +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 = hand
> > > ...
> > >
> > > [Message clipped]
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: synapse-dev-help@ws.apache.org
>
>


-- 
Davanum Srinivas :: http://davanum.wordpress.com

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


Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Mon, 2007-06-25 at 09:19 -0400, Davanum Srinivas wrote:
> Ruwan,
> 
> Can you please make appropriate changes in axis2 as well?
> 
> thanks,
> dims
> 

Davanum,

The process of upgrading Axis2 is going to be a little more complex
because this would also require some tweaks changes in SimpleHttpServer,
which is also dependent on HttpCore.

I'll submit a patch for Axis2 upgrading both the 'simple' and the NIO
transports at the same time as soon as HttpCore 4.0a5 is officially out.

Does this work for you?

Oleg


> On 6/25/07, Ruwan Linton <ru...@gmail.com> wrote:
> >
> >
> > On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> > > On Mon, 2007-06-25 at 11:44 +0530, Ruwan Linton wrote:
> > > > Hi Oleg,
> > > >
> > > > I am done with the performance tests. I think now synapse is a little
> > > > bit faster than earlier.
> > > >
> > > > No issues with the new version and I have applied the patch.
> > > >
> > > > Thanks,
> > > > Ruwan.
> > > >
> > >
> > > Great! Many thanks, Ruwan. We will go ahead with the release.
> > >
> >
> > You are more than welcome. Congratulations for the coming release.
> >
> > Ruwan.
> >
> > > Cheers
> > >
> > > Oleg
> > >
> > > > On 6/21/07, Oleg Kalnichevski < olegk@apache.org> wrote:
> > > >         On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
> > > >         > Yes asankha,
> > > >         >
> > > >         > I will be able to run some load tests and check this.
> > > >         >
> > > >         > Oleg, I will get back to you ASAP,
> > > >         >
> > > >         > Thanks,
> > > >         > Ruwan.
> > > >         >
> > > >
> > > >         Take it easy, guys. The release can wait.
> > > >
> > > >         Oleg
> > > >
> > > >         > On 6/20/07, Asankha C. Perera <as...@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/>.
> > > >         >         > + *
> > > >         >         >
> > > >         >         > + */
> > > >         >         > +
> > > >         >         > +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 = hand
> > ...
> >
> > [Message clipped]
> 
> 


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


Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Davanum Srinivas <da...@gmail.com>.
Ruwan,

Can you please make appropriate changes in axis2 as well?

thanks,
dims

On 6/25/07, Ruwan Linton <ru...@gmail.com> wrote:
>
>
> On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> > On Mon, 2007-06-25 at 11:44 +0530, Ruwan Linton wrote:
> > > Hi Oleg,
> > >
> > > I am done with the performance tests. I think now synapse is a little
> > > bit faster than earlier.
> > >
> > > No issues with the new version and I have applied the patch.
> > >
> > > Thanks,
> > > Ruwan.
> > >
> >
> > Great! Many thanks, Ruwan. We will go ahead with the release.
> >
>
> You are more than welcome. Congratulations for the coming release.
>
> Ruwan.
>
> > Cheers
> >
> > Oleg
> >
> > > On 6/21/07, Oleg Kalnichevski < olegk@apache.org> wrote:
> > >         On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
> > >         > Yes asankha,
> > >         >
> > >         > I will be able to run some load tests and check this.
> > >         >
> > >         > Oleg, I will get back to you ASAP,
> > >         >
> > >         > Thanks,
> > >         > Ruwan.
> > >         >
> > >
> > >         Take it easy, guys. The release can wait.
> > >
> > >         Oleg
> > >
> > >         > On 6/20/07, Asankha C. Perera <as...@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/>.
> > >         >         > + *
> > >         >         >
> > >         >         > + */
> > >         >         > +
> > >         >         > +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 = hand
> ...
>
> [Message clipped]


-- 
Davanum Srinivas :: http://davanum.wordpress.com

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


Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Davanum Srinivas <da...@gmail.com>.
Ruwan,

Can you please make appropriate changes in axis2 as well?

thanks,
dims

On 6/25/07, Ruwan Linton <ru...@gmail.com> wrote:
>
>
> On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> > On Mon, 2007-06-25 at 11:44 +0530, Ruwan Linton wrote:
> > > Hi Oleg,
> > >
> > > I am done with the performance tests. I think now synapse is a little
> > > bit faster than earlier.
> > >
> > > No issues with the new version and I have applied the patch.
> > >
> > > Thanks,
> > > Ruwan.
> > >
> >
> > Great! Many thanks, Ruwan. We will go ahead with the release.
> >
>
> You are more than welcome. Congratulations for the coming release.
>
> Ruwan.
>
> > Cheers
> >
> > Oleg
> >
> > > On 6/21/07, Oleg Kalnichevski < olegk@apache.org> wrote:
> > >         On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
> > >         > Yes asankha,
> > >         >
> > >         > I will be able to run some load tests and check this.
> > >         >
> > >         > Oleg, I will get back to you ASAP,
> > >         >
> > >         > Thanks,
> > >         > Ruwan.
> > >         >
> > >
> > >         Take it easy, guys. The release can wait.
> > >
> > >         Oleg
> > >
> > >         > On 6/20/07, Asankha C. Perera <as...@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/>.
> > >         >         > + *
> > >         >         >
> > >         >         > + */
> > >         >         > +
> > >         >         > +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 = hand
> ...
>
> [Message clipped]


-- 
Davanum Srinivas :: http://davanum.wordpress.com

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


Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Ruwan Linton <ru...@gmail.com>.
On 6/25/07, Oleg Kalnichevski <ol...@apache.org> wrote:
>
> On Mon, 2007-06-25 at 11:44 +0530, Ruwan Linton wrote:
> > Hi Oleg,
> >
> > I am done with the performance tests. I think now synapse is a little
> > bit faster than earlier.
> >
> > No issues with the new version and I have applied the patch.
> >
> > Thanks,
> > Ruwan.
> >
>
> Great! Many thanks, Ruwan. We will go ahead with the release.
>

You are more than welcome. Congratulations for the coming release.

Ruwan.

Cheers
>
> Oleg
>
> > On 6/21/07, Oleg Kalnichevski <ol...@apache.org> wrote:
> >         On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
> >         > Yes asankha,
> >         >
> >         > I will be able to run some load tests and check this.
> >         >
> >         > Oleg, I will get back to you ASAP,
> >         >
> >         > Thanks,
> >         > Ruwan.
> >         >
> >
> >         Take it easy, guys. The release can wait.
> >
> >         Oleg
> >
> >         > On 6/20/07, Asankha C. Perera <as...@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/>.
> >         >         > + *
> >         >         >
> >         >         > + */
> >         >         > +
> >         >         > +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/>.
> >         >         > + *
> >         >         >
> >         >         > + */
> >         >         > +
> >         >         > +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"
> >
> >
> >
> ---------------------------------------------------------------------
> >         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"
>
>
> ---------------------------------------------------------------------
> 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"

Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Mon, 2007-06-25 at 11:44 +0530, Ruwan Linton wrote:
> Hi Oleg,
> 
> I am done with the performance tests. I think now synapse is a little
> bit faster than earlier.
> 
> No issues with the new version and I have applied the patch.
> 
> Thanks,
> Ruwan.
> 

Great! Many thanks, Ruwan. We will go ahead with the release.

Cheers

Oleg

> On 6/21/07, Oleg Kalnichevski <ol...@apache.org> wrote:
>         On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
>         > Yes asankha,
>         >
>         > I will be able to run some load tests and check this.
>         >
>         > Oleg, I will get back to you ASAP,
>         >
>         > Thanks,
>         > Ruwan.
>         >
>         
>         Take it easy, guys. The release can wait.
>         
>         Oleg
>         
>         > On 6/20/07, Asankha C. Perera <as...@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/>.
>         >         > + *
>         >         > 
>         >         > + */
>         >         > +
>         >         > +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/>.
>         >         > + *
>         >         > 
>         >         > + */
>         >         > +
>         >         > +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"
>         
>         
>         --------------------------------------------------------------------- 
>         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"


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


Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Ruwan Linton <ru...@gmail.com>.
Hi Oleg,

I am done with the performance tests. I think now synapse is a little bit
faster than earlier.

No issues with the new version and I have applied the patch.

Thanks,
Ruwan.

On 6/21/07, Oleg Kalnichevski <ol...@apache.org> wrote:
>
> On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
> > Yes asankha,
> >
> > I will be able to run some load tests and check this.
> >
> > Oleg, I will get back to you ASAP,
> >
> > Thanks,
> > Ruwan.
> >
>
> Take it easy, guys. The release can wait.
>
> Oleg
>
> > On 6/20/07, Asankha C. Perera <as...@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/>.
> >         > + *
> >         >
> >         > + */
> >         > +
> >         > +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/>.
> >         > + *
> >         >
> >         > + */
> >         > +
> >         > +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"
>
>
> ---------------------------------------------------------------------
> 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"

Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Thu, 2007-06-21 at 08:56 +0530, Ruwan Linton wrote:
> Yes asankha,
> 
> I will be able to run some load tests and check this. 
> 
> Oleg, I will get back to you ASAP,
> 
> Thanks,
> Ruwan.
> 

Take it easy, guys. The release can wait.

Oleg

> On 6/20/07, Asankha C. Perera <as...@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/>.
>         > + *
>         > 
>         > + */
>         > +
>         > +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/>.
>         > + *
>         > 
>         > + */
>         > +
>         > +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"


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


Re: [PATCH] Upgrades Synapse NHttp to HttpCore 4.0-ALPHA5-SNAPSHOT, improves logging

Posted by Ruwan Linton <ru...@gmail.com>.
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 <as...@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"