Axis2客户端连接问题

时间:2016-05-02 13:21:59

标签: connection axis2

我在Middleware中有一个java(axis2 1.4.1 client)组件,它使用托管在另一个应用程序中的Web服务。我正面临着一些问题。

请找到下面的代码段

ConfigurationContext configContxt; 
MultiThreadedHttpConnectionManager connxMgr = new MultiThreadedHttpConnectionManager(); 
HttpConnectionManagerParams params = connxMgr.getParams(); 
params.setDefaultMaxConnectionsPerHost(50); 
params.setMaxTotalConnections(50); 
connxMgr .setParams(params); 
HttpClient client = new HttpClient(connxMgr); 
configContxt.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, "True");

请帮助澄清以下问题:

  1. 每当有新请求进入时,都会创建一个新连接。这可以通过netstat -a|grep <<provider URI>>来确认。
  2. 当我们之前使用的是axis2 1.3v客户端时,没有创建新连接,请说明为什么在使用axis2 1.4.1时创建新连接的原因?

    为了防止这种情况,我在ConfigurationContext中将 REUSE_HTTP_CLIENT 属性设置为 TRUE 。因此,这将重用与服务器的现有(已建立的)连接。

    1. 我已将 setDefaultMaxConnectionsPerHost setMaxTotalConnections 设置为50.当我通过触发50个请求从SoapUI执行负载测试时,只创建了3个连接。后来我增加了200个请求,但连接数仍未超过3.
    2. 我不确定为什么它不能仅使用一个连接(因为使用了重用属性),以及为什么连接数没有随着请求数量逐渐增加(50个请求的3个connx和同样的3个连接) connx for 200 requests)

      重用属性(HTTPConstants.REUSE_HTTP_CLIENT)将如何表现?

      1. 在代码中使用REUSE_HTTP_CLIENT property时,每个连接可以同时完成多少个事务?

        1. 另一个问题是我将closeIdleConnections设置为超时30秒。 httpClient.getHttpConnectionManager().closeIdleConnections(30000);
      2. 即使这样也行不通。未使用的连接仅在5分钟后关闭。我只是想知道如果在服务器端可能有一些属性设置覆盖了30秒,这是设置在客户端?

        有人可以帮我解决上述问题吗?

1 个答案:

答案 0 :(得分:0)

您发布的代码会创建HttpClient,但实际上并未在任何地方使用它。因此,您在连接管理器上应用的任何设置都不会产生任何影响,这并不奇怪。