Spring WS连接池多个池?

时间:2018-12-03 19:51:54

标签: java web-services tcp pooling

我具有以下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池,并在它们之间分配请求?

0 个答案:

没有答案