在Jetty 6中模拟maxIdleTime

时间:2014-10-11 03:08:21

标签: java jetty httpurlconnection embedded-jetty connection-close

我正在启动嵌入式Jetty服务器并使用SelectChannelConnector。由于遗留原因,我必须使用Jetty 6。

我无法正确模拟服务器端的连接。在将connector.setMaxIdleTime设置为大约20 ms的非常低的值时,它仍然不会失败。

在客户端,我正在从Jetty服务器读取数据流。

注意如果我将setMaxIdleTime值设置为大约10ms。连接正确关闭,我从服务器得到“意外的EOF”,但是当客户端解析http头时会发生这种情况。我想要做的是在我阅读实际内容时模拟相同的行为。

1 个答案:

答案 0 :(得分:0)

由于遗留原因,最好的方法是编写自己的连接器来实​​现它。 (即使仍然依赖Jetty 6的项目,例如GWT / GAE,也已经做到了。遗憾的是,这些自定义连接器都不是开源的)

在Jetty 6上,maxIdleTime实际上只是转换为Socket.setSoTimeout(int),它实际上只适用于阻止行为。对于Jetty 7,以及对异步所有内容的关注,该定义发生了很大变化,以至于maxIdleTime作为可配置甚至被重命名以代表新的现实。请参阅Stackoverflow问题的过去答案:When does maxIdleTime trigger?

小心: Jetty 6在2010年是EOL,由于漏洞不固定,在开放式互联网上不再适合或安全使用。甚至没有把它放在负载均衡器,代理,nginx或apache httpd将有所帮助。 (可以在高度受控和有限的环境中使用。)

至少升级到Jetty 7,它具有相同的servlet版本,与Jetty 6相同的JVM要求,以及空闲超时支持和wont be EOL till the end of 2014