我们有一组用 Java 编写的应用程序,它们通过套接字交换简短的 XML 消息来相互通信。目前,在开发过程中,我们在同一个工作站上运行所有应用程序。我们的问题是,在每个方向交换了数万条消息之后,这些程序之间的套接字连接可能会挂起。
查看 Eclipse 调试器中的问题,我们发现连接的两端都在运行相同代码的不同实例。两端刚刚使用其 write(String) 调用成功地将有效消息写入基于 Socket 的 BufferedWriter,并且两端似乎都在等待 BufferedWriter flush() 调用完成时被阻塞。代码没有什么不寻常的地方,它在挂起之前完美地运行了数千条消息。两端都没有抛出异常,等待似乎是无限期的。我们在 Linux 和 Windows 平台上运行时都观察到了这个问题。
谁能建议可能发生的事情?