Spring WS соединение, объединяющее несколько пулов?

У меня есть следующая конфигурация 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 ответов

Другие вопросы по тегам