我具有以下WS配置:
private WebServiceOperations createWs(final String uri) {
WebServiceTemplate wst = new WebServiceTemplate();
wst.setDefaultUri(uri);
wst.setMarshaller(marshaller());
wst.setUnmarshaller(marshaller());
HttpComponentsMessageSender messageSender = new HttpComponentsMessageSender(createPooling());
messageSender.setConnectionTimeout(timeout);
messageSender.setReadTimeout(timeout);
wst.setMessageSender(messageSender);
return wst;
}
public DefaultHttpClient createPooling() {
PoolingClientConnectionManager a = new PoolingClientConnectionManager();
a.setDefaultMaxPerRoute(6);
a.setMaxTotal(50);
DefaultHttpClient defaultClient = new DefaultHttpClient(a);
defaultClient.addRequestInterceptor(new HttpComponentsMessageSender.RemoveSoapHeadersInterceptor(), 0);
return defaultClient;
}
如果将上述配置用于WS,则会创建一个TCP连接池,最多包含6个线程。如果一个完成了工作,则返回响应,然后将另一个响应提交到池中。这表明只有一个池处于活动状态。该服务能够处理更高的流量,但不能在一个池中处理。如果有多个正在运行的Java实例,则清晰可见。
问题: 如何修改池的行为,以便为同一服务创建多个TCP池,并在它们之间分配请求?