spirngframework.ws HttpComponentsMessageSender - как установить максимальное количество подключений для любого хоста? - PullRequest
1 голос
/ 17 мая 2019

Я выполняю миграцию с Apache httpclients-3.x до 4.x, поэтому мне нужно обновить org.springframework.ws.transport.http.CommonsHttpMessageSender до org.springframework.ws.transport.http.HttpComponentsMessageSender .

Моя предыдущая конфигурация spring-beans.xml была такой:

<bean id="signHttpSender" class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
    <property name="maxConnectionsPerHost">
      <props>
        <prop key="*">20</prop>
      </props>
    </property>
  </bean>

"*" разрешено устанавливать максимальное количество соединений для любого хоста.

Если я попробуюв той же конфигурации я получаю java.lang.IllegalArgumentException: имя хоста не может быть нулевым .Глядя на код HttpComponentsMessageSender, я не вижу способа ограничить число соединений для какого-либо хоста, только общее количество соединений или максимальное количество соединений на определенный хост.CommonsHttpMessageSender

1 Ответ

0 голосов
/ 17 мая 2019

Я нашел грязное решение, которое работает. Это определенно неправильно, но я выкладываю его до тех пор, пока не найду нужного на тот случай, если он кому-нибудь поможет.

<bean id="signHttpSender" class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
    <property name="credentials" value="#{signHttpSender.getHttpClient()
                     .getConnectionManager().setDefaultMaxPerRoute(20)}"/>
  </bean>

Вы можете использовать любое другое свойство, которое не инициализировано и имеет значение null. Это решение не сработает, если вам нужно указать значения для каждого свойства.

...