如何强制Tomcat服务器在HTTP响应中发送Keep-alive头信息

8
我们的应用程序运行在一个Tomcat 7服务器上,我们希望发送回客户端的HTTP响应具有保持连接头。是否有一种改变配置的方法,比如修改server.xml,以实现这一点?非常感谢!
2个回答

7
在HTTP/1.1中,连接默认为保持活动状态,除非通过“Connection: close”头指定。因此,通常不需要明确设置保持活动标头。
当然,您始终可以添加一个servlet过滤器来设置您需要的任何标头。

2
我想要的是在Http响应中发送头部"Keep-Alive: timeout=120",以便客户端知道连接将在120秒后断开。有没有一种方法可以强制Tomcat发送这个头部? - Wei
2
你可以在代码中始终执行 response.setHeader("Keep-Alive", " timeout=120")。为了确保所有响应都执行此操作,可以在servlet过滤器中执行它。 - ZhongYu
2
是的,我们可以做到。但是有没有一种方法可以在不编写代码的情况下强制Tomcat发送标头?原因是,如果我们在过滤器中以编程方式设置标头,那么我们必须手动将代码与server.xml中的Tomcat设置同步。 - Wei
同意,但客户如何知道Keep-Alive超时是什么,或者Tomcat服务器何时自动关闭连接而不通知客户?对于使用Keep-Alive的最大客户端请求也是一样,客户端不知道可以使用持久连接进行多少请求。 - kisna
2
大多数Http客户端都进行了优化,例如,Apache HttpClient会查看此超时时间并正确地回收Keep Alive连接。无法相信Tomcat没有办法支持server.xml而不必通过添加响应头在代码中重复工作。Keep-Alive:timeout = 2,max = 100 - kisna
@user469718 - 客户端可以有其默认超时时间。实际上,客户端更清楚连接应该缓存多长时间,因为它是发起请求的一方。客户端可以在每个请求中指定其连接超时时间。然而,服务器通常有自己的最大超时时间来防范滥用客户端。服务器不希望保持空闲连接太长时间。 - ZhongYu

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接