程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Tomcat,HTTP Keep-Alive和Java的HttpsUrlConnection大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决tomcathttp Keep-Alive和Java的httpsUrlConnection?@H_489_1@ 开发过程中遇到tomcathttp Keep-Alive和Java的httpsUrlConnection的问题如何解决?下面主要结合日常开发的经验,给出你关于tomcathttp Keep-Alive和Java的httpsUrlConnection的解决方法建议,希望对你解决tomcathttp 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连接被重用。

解决方法@H_489_1@

我有两个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服务器,并且修改keepAliveTimeouthttpd.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,请注明来意。