On Wed, Apr 22, 2009 at 6:30 PM, David Rees <[email protected]> wrote:
> OK, more reading and now I realize that keep-alive should be on by
> default, but to get any performance benefit, I also need to
> REUSE_HTTP_CLIENT.  So I've done that and yes, performance has
> improved now, but I run into the default limit of only 2 concurrent
> connections per host limit.
>
> How can I set my own MULTITHREAD_HTTP_CONNECTION_MANAGER or raise the
> default limit?  This is a custom application so I am not worried about
> exceeding RFC specifications for concurrent connections.

Talking to myself a bit more, but I finally figured out how to do it
with the help of this thread[1] on the axis-dev list.  The key is to
set both REUSE_HTTP_CLIENT to true and CACHED_HTTP_CLIENT to my own
HttpClient class.

Here's what I am doing is pseudo code:

Wrap the creation of new stubs in a function which then calls these functions:

Options o = stub._getServiceClient().getOptions();
o.setProperty(HTTPConstants.CHUNKED, Boolean.FALSE);
o.setProperty(HTTPConstants.MC_ACCEPT_GZIP, Boolean.TRUE);
o.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);
o.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, getHttpClient());

getHttpClient creates a cached HttpClient with my own
MultiThreadedHttpConnectionManager:

MultiThreadedHttpConnectionManager manager = new
MultiThreadedHttpConnectionManager();
manager.getParams().setDefaultMaxConnectionsPerHost(20);
httpClient = new HttpClient(manager);
httpClient.getParams().setVersion(HttpVersion.HTTP_1_1);

So far this appears to work well and significantly reduces response
time and improves performance when making a lot of requests in a row.

Would be nice if this were documented somewhere official, but at least
now it will be in the mail archives. :-)

-Dave

[1] http://markmail.org/message/e4wdlwgnkkttqiov

Reply via email to