我有一个Tomcat 7 servlet接受来自远程客户端的连接,并在可能的情况下将这些连接保持打开数小时或数天。所以,我们正在使用NIO连接器。 物理连接上的带宽可能很昂贵,因此流量将保持在绝对最小值,因此我们已经编程了远程客户端以非常不常见的ping测试连接。Tomcat 7 servlet需要强制关闭持久的NIO连接
有时,servlet被告知连接已关闭,但似乎没有告知远程客户端。客户在ping完成之后才会发现,这时他们可以建立新的连接。我们需要缩短客户端未连接的时间长度,而不使用更多的ping。
工作方式之一是关闭Tomcat服务器。客户知道他们立即断开连接。显然,我们不想关闭Tomcat - 我的观点是必须有某种信号通过通常安静的连接。
如何强制Tomcat发送此信号?除非你能告诉我为什么,具体情况,部分是因为我无法相信,主要是因为我不想相信,所以请不要回复我不能相信。这似乎很奇怪 - 就像不能把电话挂在某人身上一样。
替代问题#1 - servlet能否恢复它被告知的连接已关闭?
备选问题#2 - 任何人都可以想到其他任何可能的帮助吗?
Stu - 谢谢你的帮助。我很惊讶客户也不知道。看起来Tomcat没有传递servlet知道的信息。我不确定客户端发生了什么。 Tomcat和客户之间有一个信誉良好的手机服务提供商,我无法知道它在做什么。 – DaveWalley
(我再次)如果我知道怎么做,我会在TCP/IP上做更多的诊断 - 网络不是我的强项。我们使用了WireShark,但我并不真正知道我在看什么。我以为我不得不使用NIO进行服务器推送 - 您能否指点我的任何示例代码或教程,以便让我加快速度? – DaveWalley
@Dave:这是全部通过移动网络?我真的会建议一种不同的方法,例如UDP或某种有限持续时间的长轮询。请记住,在一天结束时,Tomcat是一台HTTP服务器。 HTTP是无状态的请求/响应协议。这听起来不像你想要做套件HTTP非常好。 *“适合正确工作的正确工具”。*对于网络诊断工具,首先使用像netstat这样简单的工具。 Wireshare的确是很重要的东西。 –