On Wed, 2006-08-30 at 18:07 +0000, Doug Lochart wrote:
> I have a few more simple questions:
>
> 1) Is this list still the appropriate place to ask HttpComponents questions
> (vs HttpClient) and will there be a new List created for the HttpComponents
> project?
>
Yes, it is. HttpComponents project will be maintaining Commons
HttpClient 3.x until Jakarta HttpClient 4.0 is stable enough to
supersede it. At some point we'll just ask the Apache infrastructure
folks to rename the lists. Probably it is about time we did it.
> I just finished reading most of the HTTP 1.1 RFC and I tried to pay
> attention to the Persistent Connections as I was curious as to their impact
> on my application.
> So I have a simple proof-of-concept proxy server (based on the example
> ElementalHttpServer) and it is receiving connections. I understand that
> persistent connections are the default for all HTTP 1.1 communication. I
> see the HttpCore code refer to keeping the connections alive (even debug
> messages). So here are my questions ...
>
> 2) When I use Firefox to go grab a webpage that contains URI's to several
> other resources (images, css files etc) Firefox seems to make a new
> connection to port 8080 everytime and does not reuse the connection that it
> originally established.
Actually as per RFC2616 Firefox always opens two connections with the
target host if there's more than one entity to be retrieved.
> To my knowlege I am not explicitly closing the
> connection as I am expecting more connections to come.
You should be using DefaultConnectionReuseStrategy to determine if a
connection should be kept alive or not. There are cases when HTTP agents
may explicitly request the connection to be closed.
> If you look at the
> ElementalHttpServer code you will see pretty much exactly what I am doing
> when dealing with the client. Eventually the ConnectionProcessorThread will
> try to read from the socket again as the connections was kept open and I
> will get a Socket Read error.
>
You are talking about a socket connected to the client host (incoming
connection) or to the target host (outgoing connection)?
> So is there something I might be doing wrong that makes Firefox create a new
> connection?
> Is there something I might be missing or misunderstanding?
>
Quite likely
> 3) Is it because its a proxy server and the browsers make new connections
> to proxies vs reuse existing connections to web servers?
>
Are you implementing a transparent (reverse) proxy or a standard
(caching) proxy? Did you actually have to tell the browser to connect
via the proxy of yours or not?
> 4) When it comes to connection persistence and I am the client talking to a
> server will the underlying framework handle the "close" connection header
> for me and close the connection or is that something I will have to look for
> ?
It will not. However, we provide the DefaultConnectionReuseStrategy
class to aid you in implementing connection persistence.
HttpClientConnection conn = new DefaultHttpClientConnection(host);
try {
for (int i = 0; i < targets.length; i++) {
HttpGet request = new HttpGet(targets[i]);
...
HttpResponse response = httpexecutor.execute(request, conn);
...
if (!connStrategy.keepAlive(conn, response)) {
conn.close();
}
}
} finally {
conn.close();
}
> Also if I explicitly close a connection to a server on a persistent
> connection does that action send a connection "close" header?
>
No. But if you use HttpRequestExecutor with the RequestConnControl
protocol interceptor it will add the appropriate 'Connection' header for
you.
> thanks for all your help
>
> I hope my endaevors will provide some good stress testing of this
> framework.
They do. I am glad you are helping us by reviewing the API
> I really like what I see so far
>
Oleg
>
> Doug
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]