我正在使用 Apache 的 HttpRequestHandler 向 HTTP 客户端提供数据。我正在按需为客户生成内容(可能是一个成本高昂的过程)。
我想处理两种情况:
- 正常消费,结束了,我要关闭资源
- 客户端过早关闭连接,我不想继续处理事情
我正在使用一个InputStream(和一个InputStreamEntity)来执行该过程,但我想知道客户端是否提前(或不)关闭资源并在这两种情况下在最后采取操作。
我意识到InputStreamEntity.writeTo
(这是用于将内容发送到客户端的方法)不会关闭我声明的输入流。
我错过了什么?
最佳答案
我通过子类化 InputStreamEntity
并在原始行为后使 writeTo
调用关闭来解决了这个问题:
public class ClosingInputStreamEntity extends InputStreamEntity {
@Override
public void writeTo(OutputStream os) {
try {
super.writeTo(OutputStream os);
} finally {
// close resources
}
}
}
关于java - 如何在 Apache HttpRequestHandler 中连接完成时执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20693862/