我正在使用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/