web-dev-qa-db-ja.com

In Java URL接続はいつ閉じますか?

Java URLへの接続を手放すのはいつですか?URLまたはURLConnectionのclose()メソッドが表示されないため、要求が終了するとすぐに接続が解放されますか?主に、例外ハンドラでクリーンアップを行う必要があるかどうかを確認しています。

try {
  URL url = new URL("http://foo.bar");
  URLConnection conn = url.openConnection();
  // use the connection
}
catch (Exception e) {
  // any clean up here?
}
73
timdisney

プロトコルで指定された特定のプロトコルに依存します。永続的な接続を維持するものもあれば、接続によって指定された入力または出力ストリームで呼び出しが閉じられたときに接続を閉じるものもあります。ただし、URLConnectionから開いたストリームを閉じることを忘れないでください。他にできることはありません。

Java.net.URLConnectionのjavadocから

特定のプロトコル仕様で異なる動作が指定されていない限り、リクエスト後にURLConnectionのInputStreamまたはOutputStreamでclose()メソッドを呼び出すと、このインスタンスに関連付けられたネットワークリソースが解放される場合があります。

46
kasperjj

HttpURLConnectionにキャストする場合、 disconnect() メソッドがあります。接続がアイドル状態の場合、おそらくすぐに切断されます。保証なし。

48
James Schek