私は、Apache の HttpClient を多用する長期実行アプリケーションを開発しています。
私の最初のテスト実行では、アプリケーションは動かなくなるまで完全に機能しました。停止されず、例外もスローされず、何もせずにただそこに座っています。
たった今、2回目の走行をして時間を止めました。24時間連続稼働。さらに、実行していたラップトップのインターネット接続が、アプリケーションがスタックしたまさにその瞬間に終了したことに気付きました。ネットを再び稼働させるには、WLAN アダプタを再起動する必要がありました。
ただし、接続が再び確立された後、アプリケーションは動作に戻りませんでした。そして今、それは再び立ち往生しています。
HttpClient で認識していないタイムアウト コントローラーはありますか? 接続がダウンしているときにアプリケーションが例外をスローしないのはなぜですか?
クライアントを使用する部分は次のようになります。
public HttpUtil(ConfigUtil config) {
this.config = config;
client = new DefaultHttpClient();
client.getParams().setParameter(HttpProtocolParams.USER_AGENT, this.config.getProperty("httputil.userAgent"));
}
public String getContentAsString(String url) throws ParseException, ClientProtocolException, IOException {
return EntityUtils.toString(
client.execute(
new HttpGet(url)).getEntity());
}
httputil.getContentAsString()
アプリケーションは、必要な URLを繰り返し呼び出します。