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

10-09 07:33