大佬教程收集整理的这篇文章主要介绍了Tomcat,HTTP Keep-Alive和Java的HttpsUrlConnection,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
通过将tomcat连接器中的keepAliveTimeout设置为300000,我能够使用httpClIEnt 3.1保持http连接打开5分钟。我使用WireShark进行了验证,即服务器将终止连接,而httpClIEnt将仅等待。通过httpClIEnt进行的后续请求将重用现有的TCP连接(避免进行任何进一步的SSL握手)。但是,关键是只有一个httpClIEnt实例(即每次都不创建一个)。这对于大多数人来说可能是显而易见的,但是我不确定httpClIEnt的API机制是什么。简而言之,创建一个httpClIEnt实例,并为每个请求(POST,GET等)创建一个新的PostMethod,getmethod等。这将导致TCP连接被重用。
我有两个tomcat服务器,它们需要维护一个持久连接以减少SSL握手。一台服务器(代理服务器)位于DMZ中,而另一台服务器安全地位于另一台防火墙后面。代理基本上只运行一个简单的servlet,该servlet在将请求转发到安全机器之前会进行一些完整性检查。最初请求时,机器会在执行实际工作之前交换证书。因此,我想保持一个持续几分钟的超时连接。
为了与安全服务器通信,代理上的servlet使用httpsUrlConnection
。我已经设置了WireShark,并且注意到无论keepAliveTimeout
在安全机器上为连接器设置什么值,TCP连接都会在大约5或10秒后关闭。这个数字似乎与我读到的是默认超时以及Java如何处理http
Keep-
Alive相匹配。此链接说明,Keep-
Alive
如果服务器发送了Java,则Java将接受超时,否则Java将在关闭连接之前使用5秒(直接连接)或10秒(代理连接)。
我要弄清楚的是如何强制tomcat发送Keep-Alive标头。不是Connection: Keep-Alive
,但是Keep-Alive:
timeout=x
。
我已经试验过Apache http服务器,并且修改keepAliveTimeout
httpd.conf中的确会导致Keep-
Alive标头更改其超时值。此外,Java确实遵守此超时。
更新(12/23/11):
在运行了一些实验之后,我尝试使用Apache的httpClient(3.1)而不是鞭打一些快速而肮脏的代码httpsUrlConnection
。设置为使用Keep-
Alive时,httpClient似乎只是在等待服务器关闭连接。我不知道要等多久。我正在努力将http连接保持3到5分钟。
以上是大佬教程为你收集整理的Tomcat,HTTP Keep-Alive和Java的HttpsUrlConnection全部内容,希望文章能够帮你解决Tomcat,HTTP Keep-Alive和Java的HttpsUrlConnection所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。