0

私は、さまざまなクラスから HTTP 呼び出しを行ってデータを取得する、かなり大きな Java アプリケーションに取り組んでいます。しばらく実行され、実行が終了すると、実行が再開されるまで数時間待機します。(なぜこのように行われたのかは、ここでの要点を超えており、残念ながら私の手に負えません。)

実行の合間に一部の 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 に答える