spirngframework.ws HttpComponentsMessageSender-如何为每个主机设置最大连接数?

时间:2019-05-17 12:12:56

标签: java spring apache-httpclient-4.x spring-framework-beans

我正在从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 :(得分:0)

我找到了一些可行的解决方案。这肯定是错误的,但是我将其发布到找到合适的人,以防万一它会帮助某人。

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

您可以使用任何其他未初始化且为null的属性。如果您必须为每个属性都赋值,则此解决方案将行不通。