如何在Apache HttpRequestHandler中完成连接时执行代码

时间:2013-12-19 23:44:39

标签: java apache http

我正在使用Apache的HttpRequestHandler向HTTP客户端提供数据。我正在按需为客户生成内容(可能是一个代价高昂的过程)。

我想照顾两个案例:

  • 正常消费,结束,我想关闭资源
  • 客户端过早关闭连接,我不想继续处理事情

我正在使用一个执行该过程的InputStream(和一个InputStreamEntity),但是我想知道客户端是否过早地关闭了资源(或者不是),并且在两种情况下最后都采取了操作。

我意识到InputStreamEntity.writeTo(这是用于将内容发送到客户端的方法)不会关闭我声明的输入流。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我通过继承InputStreamEntity并在原始行为后调用writeTo来解决这个问题:

public class ClosingInputStreamEntity extends InputStreamEntity {
  @Override
  public void writeTo(OutputStream os) {
    try {
      super.writeTo(OutputStream os);
    } finally {
      // close resources
    }
  }
}