org.springframework.http.client
Class HttpComponentsClientHttpRequestFactory

java.lang.Object
  extended by org.springframework.http.client.HttpComponentsClientHttpRequestFactory
All Implemented Interfaces:
DisposableBean, ClientHttpRequestFactory

public class HttpComponentsClientHttpRequestFactory
extends java.lang.Object
implements ClientHttpRequestFactory, DisposableBean

ClientHttpRequestFactory implementation that uses Apache HttpComponents HttpClient to create requests.

Allows to use a pre-configured HttpClient instance - potentially with authentication, HTTP connection pooling, etc.

Since:
3.1
Author:
Oleg Kalnichevski, Arjen Poutsma

Field Summary
private static int DEFAULT_MAX_CONNECTIONS_PER_ROUTE
           
private static int DEFAULT_MAX_TOTAL_CONNECTIONS
           
private static int DEFAULT_READ_TIMEOUT_MILLISECONDS
           
private  HttpClient httpClient
           
 
Constructor Summary
HttpComponentsClientHttpRequestFactory()
          Create a new instance of the HttpComponentsClientHttpRequestFactory with a default HttpClient that uses a default org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.
HttpComponentsClientHttpRequestFactory(HttpClient httpClient)
          Create a new instance of the HttpComponentsClientHttpRequestFactory with the given HttpClient instance.
 
Method Summary
protected  HttpUriRequest createHttpUriRequest(HttpMethod httpMethod, java.net.URI uri)
          Create a Commons HttpMethodBase object for the given HTTP method and URI specification.
 ClientHttpRequest createRequest(java.net.URI uri, HttpMethod httpMethod)
          Create a new ClientHttpRequest for the specified URI and HTTP method.
 void destroy()
          Shutdown hook that closes the underlying ClientConnectionManager's connection pool, if any.
 HttpClient getHttpClient()
          Return the HttpClient used by this factory.
protected  void postProcessHttpRequest(HttpUriRequest request)
          Template method that allows for manipulating the HttpUriRequest before it is returned as part of a HttpComponentsClientHttpRequest.
 void setConnectTimeout(int timeout)
          Set the connection timeout for the underlying HttpClient.
 void setHttpClient(HttpClient httpClient)
          Set the HttpClient used by this factory.
 void setReadTimeout(int timeout)
          Set the socket read timeout for the underlying HttpClient.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_MAX_TOTAL_CONNECTIONS

private static final int DEFAULT_MAX_TOTAL_CONNECTIONS
See Also:
Constant Field Values

DEFAULT_MAX_CONNECTIONS_PER_ROUTE

private static final int DEFAULT_MAX_CONNECTIONS_PER_ROUTE
See Also:
Constant Field Values

DEFAULT_READ_TIMEOUT_MILLISECONDS

private static final int DEFAULT_READ_TIMEOUT_MILLISECONDS
See Also:
Constant Field Values

httpClient

private HttpClient httpClient
Constructor Detail

HttpComponentsClientHttpRequestFactory

public HttpComponentsClientHttpRequestFactory()
Create a new instance of the HttpComponentsClientHttpRequestFactory with a default HttpClient that uses a default org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.


HttpComponentsClientHttpRequestFactory

public HttpComponentsClientHttpRequestFactory(HttpClient httpClient)
Create a new instance of the HttpComponentsClientHttpRequestFactory with the given HttpClient instance.

Parameters:
httpClient - the HttpClient instance to use for this request factory
Method Detail

setHttpClient

public void setHttpClient(HttpClient httpClient)
Set the HttpClient used by this factory.


getHttpClient

public HttpClient getHttpClient()
Return the HttpClient used by this factory.


setConnectTimeout

public void setConnectTimeout(int timeout)
Set the connection timeout for the underlying HttpClient. A timeout value of 0 specifies an infinite timeout.

Parameters:
timeout - the timeout value in milliseconds

setReadTimeout

public void setReadTimeout(int timeout)
Set the socket read timeout for the underlying HttpClient. A timeout value of 0 specifies an infinite timeout.

Parameters:
timeout - the timeout value in milliseconds

createRequest

public ClientHttpRequest createRequest(java.net.URI uri,
                                       HttpMethod httpMethod)
                                throws java.io.IOException
Description copied from interface: ClientHttpRequestFactory
Create a new ClientHttpRequest for the specified URI and HTTP method.

The returned request can be written to, and then executed by calling ClientHttpRequest.execute().

Specified by:
createRequest in interface ClientHttpRequestFactory
Parameters:
uri - the URI to create a request for
httpMethod - the HTTP method to execute
Returns:
the created request
Throws:
java.io.IOException - in case of I/O errors

createHttpUriRequest

protected HttpUriRequest createHttpUriRequest(HttpMethod httpMethod,
                                              java.net.URI uri)
Create a Commons HttpMethodBase object for the given HTTP method and URI specification.

Parameters:
httpMethod - the HTTP method
uri - the URI
Returns:
the Commons HttpMethodBase object

postProcessHttpRequest

protected void postProcessHttpRequest(HttpUriRequest request)
Template method that allows for manipulating the HttpUriRequest before it is returned as part of a HttpComponentsClientHttpRequest.

The default implementation is empty.

Parameters:
request - the request to process

destroy

public void destroy()
Shutdown hook that closes the underlying ClientConnectionManager's connection pool, if any.

Specified by:
destroy in interface DisposableBean