我们使用 Axis2 1.5.1 项目的代码没有有效使用 HttpConnections。通过为每个主机设置一定的最大连接数限制并给应用程序施加压力,根据有意限制,响应能力并不是我预期的好,有时连接会无限期地卡住,因此可用连接每次都会减少,直到达到没有请求被处理的程度由应用程序。
配置:
MultiThreadedHttpConnectionManager connManager = new MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams connectionManagerParams = connManager.getParams();
connectionManagerParams.setMaxTotalConnections(httpMaxConnections);
connectionManagerParams.setDefaultMaxConnectionsPerHost(httpMaxConnectionsPerHost);
HttpClient httpClient = new HttpClient(connManager);
ConfigurationContext axisContext;
try {
axisContext = ConfigurationContextFactory.createDefaultConfigurationContext();
} catch (Exception e) {
throw new AxisFault(e.getMessage());
}
axisContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
service = new MyStub(axisContext, url);
ServiceClient serviceClient = service._getServiceClient();
serviceClient.getOptions().setProperty(HTTPConstants.CONNECTION_TIMEOUT, httpConnectionTimeout);
serviceClient.getOptions().setProperty(HTTPConstants.SO_TIMEOUT, httpReadTimeout);
serviceClient.getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Constants.VALUE_TRUE);
因此,如您所见,我们正在定义最大值。连接和超时。
我有一个解决方法我会分享,希望能帮助像我一样匆忙的人。如果专家没有更好的答案,我会在几天后将我的答案标记为好答案。