我正在从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中的“ *”相同的结果?
答案 0 :(得分:0)
我找到了一些可行的解决方案。这肯定是错误的,但是我将其发布到找到合适的人,以防万一它会帮助某人。
<bean id="signHttpSender" class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
<property name="credentials" value="#{signHttpSender.getHttpClient()
.getConnectionManager().setDefaultMaxPerRoute(20)}"/>
</bean>
您可以使用任何其他未初始化且为null的属性。如果您必须为每个属性都赋值,则此解决方案将行不通。