0

我正在开发一个相当大的 Java 应用程序,该应用程序执行来自不同类的 HTTP 调用以获取数据。它会运行一段时间,并在运行结束时等待几个小时,直到再次开始运行。(为什么这样做已经超出了我的控制范围,不幸的是。)

我有一个问题,因为在两次运行之间,一些 HTTP 连接保持打开状态(我检查了netstat -p |grep <pid>)。我已经浏览了代码,看看我们应该在哪里关闭连接,但没有也无法找到任何东西。大多数请求属于Unmarshaller.unmarshal(url).

所以我的问题是:有没有办法在运行结束时检查该应用程序维护的特定端口上的连接并关闭它们?

4

1 回答 1

2

部分问题在于 HTTP 规范本身。我怀疑连接没有立即关闭,因为规范不能保证每个数据包的交付时间。

它可能是一个 Web 服务器配置来告诉它保持连接活动多长时间。我会调查的。也许您可以使用 Fiddler 之类的工具甚至 Chrome 开发人员工具来查看 HTTP 标头并查看 keep alive 标头设置为:

http://en.wikipedia.org/wiki/HTTP_persistent_connection

于 2013-06-12T12:03:34.503 回答