Interface Apache5ConnectionClosingStrategy

All Known Implementing Classes:
Apache5ConnectionClosingStrategy.Apache5GracefulClosingStrategy

public interface Apache5ConnectionClosingStrategy
Strategy that defines the way the Apache client releases resources. The client enables closing the content stream and the response. From the Apache documentation:
     The difference between closing the content stream and closing the response is that
     the former will attempt to keep the underlying connection alive by consuming the
     entity content while the latter immediately shuts down and discards the connection.
 
In the case of Chunk content stream, the stream is not closed on the server side, and the client can hang on reading the closing chunk. Using the ClientProperties.READ_TIMEOUT property can prevent this hanging forever and the reading of the closing chunk is terminated when the time is out. The other option, when the timeout is not set, is to abort the Apache client request. This is the default for Apache Client 4.5.1+ when the read timeout is not set.

Another option is not to close the content stream, which is possible by the Apache client documentation. In this case, however, the server side may not be notified and would not close its chunk stream.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
    Strategy that aborts Apache HttpRequests for the case of Chunked Stream, closes the stream, and response next.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    close(ClientRequest clientRequest, org.apache.hc.client5.http.classic.methods.HttpUriRequest request, org.apache.hc.client5.http.impl.classic.CloseableHttpResponse response, InputStream stream)
    Method to close the connection.
  • Method Details

    • close

      void close(ClientRequest clientRequest, org.apache.hc.client5.http.classic.methods.HttpUriRequest request, org.apache.hc.client5.http.impl.classic.CloseableHttpResponse response, InputStream stream) throws IOException
      Method to close the connection.
      Parameters:
      clientRequest - The ClientRequest to get configuration, and resolve properties.
      request - Apache HttpUriRequest that can be aborted.
      response - Apache CloseableHttpResponse that can be closed.
      stream - The entity stream that can be closed.
      Throws:
      IOException - In case of some of the closing methods throws IOException