我正在研究一个相当大的Java应用程序,它从不同的类执行HTTP调用以获取数据。它运行一段时间,在运行结束时等待几个小时,直到它再次开始运行。 (为什么以这种方式完成这一点超出了我的控制范围,不幸的是。)
我遇到了一个问题,因为在两次运行之间,某些HTTP连接仍处于打开状态(我使用netstat -p |grep <pid>
进行了检查)。我已经完成了代码,看看我们应该关闭连接的位置但是没有找到任何东西。大多数请求属于Unmarshaller.unmarshal(url)
类型。
所以我的问题是:有没有办法在运行结束时检查此应用程序维护并关闭它们的特定端口上的连接?
答案 0 :(得分:2)
部分问题是HTTP规范本身。我怀疑连接没有立即关闭,因为规范不能保证每个数据包的传送时间。
它可能是一个Web服务器配置,告诉它保持连接存活多长时间。我会调查一下。也许您可以使用像Fiddler甚至Chrome开发人员工具这样的工具来查看HTTP标头,并查看保持活动标头设置的内容: