Class ApacheConnectorProvider

java.lang.Object
org.glassfish.jersey.apache.connector.ApacheConnectorProvider
All Implemented Interfaces:
ConnectorProvider

public class ApacheConnectorProvider extends Object implements ConnectorProvider
Connector provider for Jersey connectors that utilize Apache HTTP Client to send and receive HTTP request and responses.

The following connector configuration properties are supported:

Connector instances created via this connector provider use chunked encoding as a default setting. This can be overridden by the ClientProperties.REQUEST_ENTITY_PROCESSING. By default the ClientProperties.CHUNKED_ENCODING_SIZE property is only supported when using the default org.apache.http.conn.HttpClientConnectionManager instance. If custom connection manager is used, then chunked encoding size can be set by providing a custom org.apache.http.HttpClientConnection (via custom org.apache.http.impl.conn.ManagedHttpClientConnectionFactory) and overriding it's createOutputStream method.

Use of authorization by the AHC-based connectors is dependent on the chunk encoding setting. If the entity buffering is enabled, the entity is buffered and authorization can be performed automatically in response to a 401 by sending the request again. When entity buffering is disabled (chunked encoding is used) then the property ApacheClientProperties.PREEMPTIVE_BASIC_AUTHENTICATION must be set to true.

If a ClientResponse is obtained and an entity is not read from the response then InboundMessageContext.close() MUST be called after processing the response to release connection-based resources.

Registration of ApacheHttpClientBuilderConfigurator instance on the Client is supported. A configuration provided by ApacheHttpClientBuilderConfigurator will override the HttpClientBuilder configuration set by using the properties.

If a response entity is obtained that is an instance of Closeable then the instance MUST be closed after processing the entity to release connection-based resources.

The following methods are currently supported: HEAD, GET, POST, PUT, DELETE, OPTIONS, PATCH and TRACE.

Since:
2.5
Author:
Pavel Bucek, Arul Dhesiaseelan (aruld at acm.org), jorgeluisw at mac.com, Marek Potociar, Paul Sandoz, Maksim Mukosey (mmukosey at gmail.com)
  • Constructor Details

    • ApacheConnectorProvider

      public ApacheConnectorProvider()
  • Method Details

    • getConnector

      public Connector getConnector(Client client, Configuration runtimeConfig)
      Description copied from interface: ConnectorProvider
      Get a Jersey client connector instance for a given client instance and Jersey client runtime configuration.

      Note that the supplied runtime configuration can be different from the client instance configuration as a single client can be used to serve multiple differently configured runtimes. While the SSL context or hostname verifier are shared, other configuration properties may change in each runtime.

      Based on the supplied client and runtime configuration data, it is up to each connector provider implementation to decide whether a new dedicated connector instance is required or if the existing, previously create connector instance can be reused.

      Specified by:
      getConnector in interface ConnectorProvider
      Parameters:
      client - Jersey client instance.
      runtimeConfig - Jersey client runtime configuration.
      Returns:
      configured Connector instance to be used by the client.
    • getHttpClient

      public static org.apache.http.client.HttpClient getHttpClient(Configurable<?> component)
      Retrieve the underlying Apache HttpClient instance from JerseyClient or JerseyWebTarget configured to use ApacheConnectorProvider.
      Parameters:
      component - JerseyClient or JerseyWebTarget instance that is configured to use ApacheConnectorProvider.
      Returns:
      underlying Apache HttpClient instance.
      Throws:
      IllegalArgumentException - in case the component is neither JerseyClient nor JerseyWebTarget instance or in case the component is not configured to use a ApacheConnectorProvider.
      Since:
      2.8
    • getCookieStore

      public static org.apache.http.client.CookieStore getCookieStore(Configurable<?> component)
      Retrieve the underlying Apache CookieStore instance from JerseyClient or JerseyWebTarget configured to use ApacheConnectorProvider.
      Parameters:
      component - JerseyClient or JerseyWebTarget instance that is configured to use ApacheConnectorProvider.
      Returns:
      underlying Apache CookieStore instance.
      Throws:
      IllegalArgumentException - in case the component is neither JerseyClient nor JerseyWebTarget instance or in case the component is not configured to use a ApacheConnectorProvider.
      Since:
      2.16