java - spirngframework.ws HttpComponentsMessageSender - 如何设置每个主机的最大连接数?
问题描述
我正在从 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: Host name may not be null。查看 HttpComponentsMessageSender 代码,我发现无法限制任何主机的连接数,只能限制每个主机的连接总数或最大连接数。
我怎样才能获得与在 CommonsHttpMessageSender 中使用“*”相同的结果?
解决方案
我发现了一些有效的肮脏解决方案。这绝对是错误的,但我会发布它,直到找到合适的,以防万一它会帮助某人。
<bean id="signHttpSender" class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
<property name="credentials" value="#{signHttpSender.getHttpClient()
.getConnectionManager().setDefaultMaxPerRoute(20)}"/>
</bean>
您可以使用任何其他未初始化且为空的属性。如果您必须为每个属性赋值,则此解决方案将不起作用。
推荐阅读
- php - 如何将对象映射到该对象的单个值?
- c - 出现分段错误但看不到错误?
- ios - 在 iOS 中,如何在代码中找到特定按钮的位置?
- ios - UITableView 在初始加载时未正确绘制单元格 - Swift
- apache - 在 apache 上使用 nginx 作为反向代理时找不到 Yii2 资产
- javascript - 在输入焦点上打开引导下拉菜单
- java - 通过单击 html 按钮打开 jPanel 程序
- android - 权限回调和授予权限之间的明显延迟
- git - 如何从 PR 中删除合并提交?
- android - 在android studio中使用JDBC,找不到合适的驱动程序