commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Karr, David" <david.k...@wamu.net>
Subject RE: How to make HttpClient NOT send "Proxy-Connection: Keep-Alive"?
Date Thu, 07 Sep 2006 16:48:32 GMT
This code I just added to set the cachesize and timeout is the only time
I ever reference SSLContext.  Should I be setting something specific to
HttpClient for this? 

> -----Original Message-----
> From: Oleg Kalnichevski [mailto:olegk@apache.org] 
> Sent: Thursday, September 07, 2006 9:37 AM
> To: Jakarta Commons Users List
> Subject: RE: How to make HttpClient NOT send 
> "Proxy-Connection: Keep-Alive"?
> 
> On Thu, 2006-09-07 at 09:31 -0700, Karr, David wrote:
> > Just before sending the http request, I tried setting the session 
> > context timeout and cachesize both to 0, but it had no 
> apparent effect 
> > (I tried both protocols "SSL" and "TLS").
> > 
> 
> I do not think this is good enough. You may want to set those 
> parameters prior to calling SSLContext#getSocketFactory() or 
> even while setting up the SSLContext.
> 
> Oleg
> 
> 
> > I've spent enough time on this.  I give up.  I implemented a batch 
> > file that calls this class in a loop, I guess I'll have to 
> settle for that.
> > 
> > > -----Original Message-----
> > > From: Oleg Kalnichevski [mailto:olegk@apache.org]
> > > Sent: Thursday, September 07, 2006 9:01 AM
> > > To: Jakarta Commons Users List
> > > Subject: RE: How to make HttpClient NOT send
> > > "Proxy-Connection: Keep-Alive"?
> > > 
> > > On Thu, 2006-09-07 at 08:48 -0700, Karr, David wrote:
> > > > I thought I'd gone through this explanation already.
> > > > 
> > > > I have an application that is a web service, which when
> > > invoked, will
> > > > send two consecutive requests to an external web service
> > > through our
> > > > firewall (using HttpClient).  It will be executed at random
> > > times of
> > > > the day, perhaps in bursts.
> > > > 
> > > > That application is working fine, but I need to write a test 
> > > > client for the external web service that is only intended to 
> > > > measure the performance baseline we should expect for 
> the external 
> > > > web
> > > service.  I
> > > > want to make this test client convenient to use, and 
> give it the 
> > > > ability to simulate some load on the external web 
> service.  I want 
> > > > each iteration of the two-message test case to be
> > > independent.  If I
> > > > execute each test case by itself on a single thread, I get
> > > that, but
> > > > if I execute the test case two times in a row on the same
> > > thread, then
> > > > the second test case is faster than the first.  I want 
> to do what 
> > > > I can to prevent that optimization.  I want two consecutive
> > > runs of the
> > > > test case on the same thread to execute almost the same as two 
> > > > runs executed from separate threads.
> > > > 
> > > > I certainly agree that it's always a good thing to keep 
> open http 
> > > > connections for subsequent requests, and to cache data 
> for the SSL 
> > > > connection, but in the case of my test client, I'm trying to 
> > > > defeat those optimizations.
> > > > 
> > > 
> > > I still do not quite see why. Anyways, 
> javax.net.ssl.SSLContext and 
> > > javax.net.ssl.SSLSessionContext are your best friends
> > > 
> > > Hope this help
> > > 
> > > Oleg
> > > 
> > > 
> > > > > -----Original Message-----
> > > > > From: Oleg Kalnichevski [mailto:olegk@apache.org]
> > > > > Sent: Thursday, September 07, 2006 8:25 AM
> > > > > To: Jakarta Commons Users List
> > > > > Subject: RE: How to make HttpClient NOT send
> > > > > "Proxy-Connection: Keep-Alive"?
> > > > > 
> > > > > On Wed, 2006-09-06 at 06:32 -0700, Karr, David wrote:
> > > > > > Ok, how do I diagnose that, and is there anything I can do
> > > > > about it? 
> > > > > > 
> > > > > 
> > > > > David,
> > > > > 
> > > > > Actually, SSL session caching is meant to be a good 
> thing, as it 
> > > > > reduces the overhead of re-opening SSL connections. Why would 
> > > > > you want to disable it?
> > > > > 
> > > > > Oleg
> > > > > 
> > > > > > > -----Original Message-----
> > > > > > > From: Oleg Kalnichevski [mailto:olegk@apache.org]
> > > > > > > Sent: Wednesday, September 06, 2006 2:51 AM
> > > > > > > To: Jakarta Commons Users List
> > > > > > > Subject: RE: How to make HttpClient NOT send
> > > > > > > "Proxy-Connection: Keep-Alive"?
> > > > > > > 
> > > > > > > On Tue, 2006-09-05 at 14:21 -0700, Karr, David wrote:
> > > > > > > > Sigh.
> > > > > > > > 
> > > > > > > > Adding the "Connection: close" header didn't help.
 In
> > > > > > > fact, I don't
> > > > > > > > even see it in Ethereal.  I don't get that.
> > > > > > > > 
> > > > > > > > Adding a derived HttpConnectionManager didn't help.

> > >  I derived
> > > > > > > > from SimpleHttpConnectionManager, just adding a
> > > > > > > releaseConnection() method
> > > > > > > > that closes the connection.  I added a print 
> statement to
> > > > > > > the method
> > > > > > > > to make sure it got there.
> > > > > > > > 
> > > > > > > > There must be something else that causes the first
> > > > > > > connection on the
> > > > > > > > thread to be slower than the 2nd-Nth connections.
> > > > > > > > 
> > > > > > > 
> > > > > > > I suspect that something is likely to be SSL 
> session caching.
> > > > > > > 
> > > > > > > Oleg
> > > > > > > 
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Oleg Kalnichevski [mailto:olegk@apache.org]
> > > > > > > > > Sent: Tuesday, September 05, 2006 11:25 AM
> > > > > > > > > To: Jakarta Commons Users List
> > > > > > > > > Subject: RE: How to make HttpClient NOT send
> > > > > > > > > "Proxy-Connection: Keep-Alive"?
> > > > > > > > > 
> > > > > > > > > On Tue, 2006-09-05 at 11:02 -0700, Karr, David
wrote:
> > > > > > > > > > Acknowledged.
> > > > > > > > > > 
> > > > > > > > > ....
> > > > > > > > > > So, is there any way I can convince HttpClient
> > > to make the
> > > > > > > > > connection
> > > > > > > > > > go away between each test case (between
each pair
> > > > > of requests,
> > > > > > > > > > that is)?  I figured getting it to not send
the
> > > "Keep-Alive"
> > > > > > > > > header would
> > > > > > > > > > do it, but apparently you're saying that
that
> > > is necessary
> > > > > > > > > for SSL to work.
> > > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > This is a whole different story. In order to
disable
> > > > > connection
> > > > > > > > > persistence you can (1) add "Connection: 
> close" to each
> > > > > > > request or
> > > > > > > > > (2) implement a custom connection manager (or
extend
> > > > > an existing
> > > > > > > > > one) and close connections upon their release
in the 
> > > > > > > > > HttpConnectionManager#releaseConnection method
> > > > > > > > > 
> > > > > > > > > Hope this helps,
> > > > > > > > > 
> > > > > > > > > Oleg
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > From: Oleg Kalnichevski [mailto:olegk@apache.org]
> > > > > > > > > > > Sent: Tuesday, September 05, 2006 10:27
AM
> > > > > > > > > > > To: Jakarta Commons Users List
> > > > > > > > > > > Subject: RE: How to make HttpClient
NOT send
> > > > > > > > > > > "Proxy-Connection: Keep-Alive"?
> > > > > > > > > > > 
> > > > > > > > > > > On Tue, 2006-09-05 at 10:09 -0700,
Karr, 
> David wrote:
> > > > > > > > > > > > Well, the URL I'm going to is
using https,
> > > but I'm not
> > > > > > > > > > > doing anything
> > > > > > > > > > > > specific with SSL in the HttpClient
connection.
> > > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > That pretty much explains why you are
seeing
> > > > > > > "Proxy-Connection:
> > > > > > > > > > > Keep-Alive" headers with the traffic

> analyzer. These
> > > > > > > headers are
> > > > > > > > > > > sent with the HTTP CONNECT method because
if the
> > > > > > > > > connection is not
> > > > > > > > > > > kept alive you would not be able to
tunnel secure 
> > > > > > > > > > > connections through the proxy
> > > > > > > > > > > 
> > > > > > > > > > > Hope this helps somewhat.
> > > > > > > > > > > 
> > > > > > > > > > > Oleg
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > > From: Oleg Kalnichevski 
> > > > > > > > > > > > > [mailto:olegk@apache.org]
> > > > > > > > > > > > > Sent: Tuesday, September
05, 2006 9:27 AM
> > > > > > > > > > > > > To: Jakarta Commons Users
List
> > > > > > > > > > > > > Subject: RE: How to make
HttpClient NOT send
> > > > > > > > > > > > > "Proxy-Connection: Keep-Alive"?
> > > > > > > > > > > > > 
> > > > > > > > > > > > > On Tue, 2006-09-05 at 09:12
-0700, Karr,
> > > David wrote:
> > > > > > > > > > > > > > I'm confused.  This
seemed like it
> > > would work.  I
> > > > > > > > > > > > > > added two subclasses,
one called 
> > > > > > > > > > > > > > "GetMethodNoKeepAlive",
and
> > > > > > > > > the other
> > > > > > > > > > > > > > "PostMethodNoKeepAlive".
 I created
> > > > > instances of those
> > > > > > > > > > > instead of
> > > > > > > > > > > > > > "GetMethod" and "PostMethod".
 Each of the
> > > > > subclasses
> > > > > > > > > > > has an empty
> > > > > > > > > > > > > > "addProxyConnectionHeader"
method, except
> > > > > for a print
> > > > > > > > > > > > > statement saying
> > > > > > > > > > > > > > it got there.  I monitored
the execution in
> > > > > > > > > Ethereal.  When it
> > > > > > > > > > > > > > executed, I saw the
print statements
> > > > > execute, but my
> > > > > > > > > > > > > > timing
> > > > > > > > > > > > > behavior
> > > > > > > > > > > > > > made it look like it
made no 
> difference.  In 
> > > > > > > > > > > > > > my
> > > > > > > > > > > Ethereal results,
> > > > > > > > > > > > > > I still see the
> > > > > > > > > > > > > > "Proxy-Connection: Keep-Alive"
when it
> > > > > connects to the
> > > > > > > > > > > > > external host.
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > > > David,
> > > > > > > > > > > > > 
> > > > > > > > > > > > > Are you using SSL tunneling
by any chance? 
> > > > > > > > > > > > > 
> > > > > > > > > > > > > Oleg
> > > > > > > > > > > > > 
> > > > > > > > > > > > > > I even tried overriding
the
> > > > > > > "shouldCloseConnection" method
> > > > > > > > > > > > > to return
> > > > > > > > > > > > > > true, in both classes.
 Still no effect.
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > > > > From: Oleg Kalnichevski

> > > > > > > > > > > > > > > [mailto:olegk@apache.org]
> > > > > > > > > > > > > > > Sent: Tuesday,
September 05, 2006 5:00 AM
> > > > > > > > > > > > > > > To: Jakarta Commons
Users List
> > > > > > > > > > > > > > > Cc: Karr, David
> > > > > > > > > > > > > > > Subject: Re: How
to make 
> HttpClient NOT send
> > > > > > > > > > > > > > > "Proxy-Connection:
Keep-Alive"?
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > On Wed, 2006-08-30
at 15:04 -0700, Karr,
> > > > > David wrote:
> > > > > > > > > > > > > > > > This may seem
strange, but is it
> > > > > possible to make
> > > > > > > > > > > > > > > HttpClient NOT
send
> > > > > > > > > > > > > > > > the "Proxy-Connection:

> Keep-Alive" header?
> > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > David,
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > There's no elegant
solution to this
> > > problem. The
> > > > > > > > > only way to
> > > > > > > > > > > > > > > work the problem
around is to subclass 
> > > > > > > > > > > > > > > method
> > > > > > > > > classes (such
> > > > > > > > > > > > > > > as
> > > > > > > > > > > > > GetMethod,
> > > > > > > > > > > > > > > PostMethod, and
so on) and override the 
> > > > > > > > > > > > > > > HttpMethodBase#addProxyConnectionHeader

> > > > > > > > > > > > > > > method
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > Oleg
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > I'm trying
to write a test tool to
> > > load test
> > > > > > > > > > > > > > > > an outside
web
> > > > > > > > > > > > > > > service,
> > > > > > > > > > > > > > > > but doing
it in a way that is somewhat
> > > > > > > consistent with
> > > > > > > > > > > > > an internal
> > > > > > > > > > > > > > > > application
that will be calling that
> > > > > outside web
> > > > > > > > > > > service.  My
> > > > > > > > > > > > > > > > test tool
can send the message multiple
> > > > > times so
> > > > > > > > > > > > > > > > we can generate
> > > > > > > > > > > > > > > statistics
> > > > > > > > > > > > > > > > on the roundtrip
time.  What I
> > > first noticed
> > > > > > > > > > > > > > > > is that
> > > > > > > > > > > > > when I send N
> > > > > > > > > > > > > > > > messages on
a thread, the 2nd-Nth
> > > message is
> > > > > > > > > > > > > > > > faster
> > > > > > > > > > > > > than the first
> > > > > > > > > > > > > > > > one.  After
examining the protocol
> > > behavior in
> > > > > > > > > > > > > Ethereal, I noticed
> > > > > > > > > > > > > > > > that HttpClient
appears to be sending a
> > > > > > > > > "Proxy-Connection:
> > > > > > > > > > > > > > > Keep-Alive" 
> > > > > > > > > > > > > > > > header.  If
I modified my test 
> code to add 
> > > > > > > > > > > > > > > > a
> > > > > > > > > manual delay
> > > > > > > > > > > > > > > > (9-10
> > > > > > > > > > > > > > > > seconds) between
each message send,
> > > then the
> > > > > > > > > > > > > > > > 2nd-Nth
> > > > > > > > > > > > > > > message timings
> > > > > > > > > > > > > > > > were about
the same as the first one.
> > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > I'd prefer
not to have that 
> manual delay 
> > > > > > > > > > > > > > > > between
> > > > > > > > > > > each message.  
> > > > > > > > > > > > > > > > For the sake
of getting consistent
> > > results, is
> > > > > > > > > > > there any way
> > > > > > > > > > > > > > > > to disable
the sending of the
> > > "Proxy-Connection:
> > > > > > > > > > > > > Keep-Alive" header?
> > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > > > > > > > > > -
> > > > > > > > > > > > > > > > To unsubscribe,
e-mail: 
> > > > > > > > > > > > > > > > 
> commons-user-unsubscribe@jakarta.apache.or
> > > > > > > > > > > > > > > > g For additional
commands, e-mail:
> > > > > > > > > > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > > > > > > > > > - To unsubscribe,
e-mail: 
> > > > > > > > > > > > > > > 
> commons-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > > > > > > For additional
commands, e-mail: 
> > > > > > > > > > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > > > > > > > -
> > > > > > > > > > > > > > To unsubscribe, e-mail:

> > > > > > > > > > > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > > > > > For additional commands,
e-mail: 
> > > > > > > > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > > > > > > > - To unsubscribe, e-mail:

> > > > > > > > > > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > > > > For additional commands,
e-mail: 
> > > > > > > > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > > > > > > > 
> > > > > > > > > > > > > 
> > > > > > > > > > > > 
> > > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > > > > > -
> > > > > > > > > > > > To unsubscribe, e-mail: 
> > > > > > > > > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > > > For additional commands, e-mail:

> > > > > > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > > > > > > 
> > > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > > > > > - To unsubscribe, e-mail: 
> > > > > > > > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > > For additional commands, e-mail: 
> > > > > > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > > > > > 
> > > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > > > -
> > > > > > > > > > To unsubscribe, e-mail: 
> > > > > > > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > > > > > > For additional commands, e-mail: 
> > > > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > > > - To unsubscribe, e-mail: 
> > > > > > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > > > > > For additional commands, e-mail: 
> > > > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > -
> > > > > > > > To unsubscribe, e-mail: 
> > > > > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > > > > For additional commands, e-mail: 
> > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > > 
> > > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > - To unsubscribe, e-mail: 
> > > > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > > > For additional commands, e-mail: 
> > > > > > > commons-user-help@jakarta.apache.org
> > > > > > > 
> > > > > > > 
> > > > > > 
> > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > -
> > > > > > To unsubscribe, e-mail: 
> > > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > > For additional commands, e-mail: 
> > > > > commons-user-help@jakarta.apache.org
> > > > > > 
> > > > > > 
> > > > > 
> > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > - To unsubscribe, e-mail: 
> > > > > commons-user-unsubscribe@jakarta.apache.org
> > > > > For additional commands, e-mail: 
> > > > > commons-user-help@jakarta.apache.org
> > > > > 
> > > > > 
> > > > 
> > > > 
> > > 
> --------------------------------------------------------------------
> > > -
> > > > To unsubscribe, e-mail: 
> > > > commons-user-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: 
> > > commons-user-help@jakarta.apache.org
> > > > 
> > > > 
> > > 
> > > 
> > > 
> --------------------------------------------------------------------
> > > - To unsubscribe, e-mail: 
> > > commons-user-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: 
> > > commons-user-help@jakarta.apache.org
> > > 
> > > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: 
> commons-user-help@jakarta.apache.org
> > 
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Mime
View raw message