Tomcat,HTTP Keep-Alive和Java的HttpsUrlConnection。
我有两台Tomcat服务器,需要保持持久的连接以减少SSL握手。一台服务器(代理)位于 DMZ 中,而另一台服务器安全地位于另一个防火墙后面。代理基本上只是运行一个简单的servlet,在将请求转发到安全机器之前进行一些健全性检查。在初始请求中,机器在执行实际工作之前交换证书。因此,我想保持一个持久连接,超时几分钟。
要与安全服务器通信,代理上的 servlet 使用 。我已经设置了WireShark,我注意到无论我在安全计算机上为连接器设置什么值,TCP连接都会在大约5或10秒后关闭。这个数字似乎与我读到的缺省超时以及Java如何处理HTTP Keep-Alive相匹配。此链接说明,如果超时是由服务器发送的,则 Java 会遵守超时,否则它会在关闭连接之前使用 5 秒(直接连接)或 10 秒(代理连接)。HttpsUrlConnection
keepAliveTimeout
Keep-Alive
我试图弄清楚的是,我该如何强制Tomcat发送Keep-Alive标头。不是,,但是 .Connection: Keep-Alive
Keep-Alive: timeout=x
我已经尝试了Apache HTTP服务器,修改httpd.conf中的确实会导致Keep-Alive标头更改其超时值。此外,Java确实支持此超时。keepAliveTimeout
更新(12/23/11):在运行了更多的实验之后,我尝试使用Apache的HttpClient(3.1)而不是.0来编写一些快速而肮脏的代码。当设置为使用 Keep-Alive 时,HttpClient 似乎只是等待服务器关闭连接。我不知道它会等多久。我正在拍摄以保持HTTP连接处于活动状态3到5分钟。HttpsUrlConnection