2012-10-23 28 views
2

从netstat -anp | grep我在两个不同的时间,我可以看到HttpClient不重新使用我的连接。我使用不同的网址,如HttpClient不重新使用我的连接,不断创建新连接

每次都连接到同一主机为什么HttpClient的不只是myhost.com每次都相同的连接重新使用?

我对泳池的intialization下面的代码,我传递给HttpClient的...

PoolingClientConnectionManager mgr = new PoolingClientConnectionManager(); 
mgr.setDefaultMaxPerRoute(30); 
mgr.setMaxTotal(30); 

我看到他们正在使用的HttpRoute并在其中似乎很奇怪,因为HttpRoute应该是平等的平等都将localAddress在主机名和模式(https/http)上,就是这样,对吧?这与它有什么关系?这是一个错误?性能非常糟糕,每次都必须重新建立https套接字!!!!!

回答

6

我怀疑你的应用程序建立的SSL连接是有状态的。也就是说,服务器请求客户端使用专用证书进行身份验证,使其成为安全上下文特定的。 HttpClient检测并阻止这些连接被租借给具有不同安全上下文的调用者。实际上,HttpClient通过为每个请求强制一个新连接而不是冒着将持久SSL连接出租给错误用户的风险来保证安全。

您可以在这里做两件事情

  • 禁止连接状态跟踪
  • 确保所有逻辑相关的请求共享相同的上下文(推荐)

详情参见HttpClient tutorial本节

+0

这是上下文处理,我错了..谢谢! –

相关问题