一部のHTTPサーバーに接続し、ページのHTMLコンテンツをダウンロードしてから、他のHTTPサーバーに移動するクローラーJavaアプリケーションがあります。このタスクでは、Apache HTTP ライブラリを使用しました。
実行の最初の数時間は、かなりスムーズに動作しているように見えます (接続関連の例外がときどきスローされますが、これは想定内です)。それでもしばらくすると、送信するすべてのリクエストで SocketTimeoutException が発生し続けるようです。例外は HttpClient クラスの "execute" メソッドでは発生しませんが、Entity のコンテンツ (HttpResponse オブジェクトから取得) を取得しようとしたとき、またはそのコンテンツをファイルに書き込もうとしたときに発生します。
次に、アプリケーションを停止して最初からやり直すと、正常に動作するように戻ったように見えます-停止した場所から再開したにもかかわらず、対話しようとしたときに SocketTimeoutException を受け取ったのと同じサーバーと対話していることを意味します前と。
不足している可能性があり、このライブラリを使用するときに不可欠である可能性のあるあらゆる種類のクリーンアップを探してみましたが、何も見つかりませんでした.
どんな助けでも大歓迎です。ありがとう。