HttpURLConnection からの inputStream があります。inputStream はプロパティとしてオブジェクトに渡され、後で Struts2 フレームワークから getter を介して呼び出され、ユーザーのブラウザに直接ストリームを提供します。コードは期待どおりに動作しているように見えますが、ユーザーのブラウザーから読み取られる前に入力ストリームが無効になるため、HttpURLConnection を適切に閉じることができないのではないかと心配しています。コードは次のとおりです。
private void DownloadOutput(DownloadableObject retVal, URL u, String cookie) {
try {
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Cookie", cookie);
Map<String, List<String>> headers = conn.getHeaderFields();
retVal.setContentLength(conn.getContentLength());
retVal.setStream(new BufferedInputStream(conn.getInputStream()));
// in.close();
// conn.disconnect();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
最適なアプローチは何かという提案はありますか? gc は後で HttpURLConnection オブジェクトをクリアすると思いますが、ハウスキーピングを積極的に行うことをお勧めします。また、プロキシ オブジェクトに渡された「新しい BufferedInputStream」は、基礎となる struts フレームワーク (?) によって閉じられると想定しています。