Class ApacheConnector
- All Implemented Interfaces:
Connector,Inflector<ClientRequest,ClientResponse>
Connector that utilizes the Apache HTTP Client to send and receive
HTTP request and responses.
The following properties are only supported at construction of this class:
ApacheClientProperties.CONNECTION_MANAGERApacheClientProperties.REQUEST_CONFIGApacheClientProperties.CREDENTIALS_PROVIDERApacheClientProperties.DISABLE_COOKIESClientProperties.PROXY_URIClientProperties.PROXY_USERNAMEClientProperties.PROXY_PASSWORDClientProperties.REQUEST_ENTITY_PROCESSING- default value isRequestEntityProcessing.CHUNKEDApacheClientProperties.PREEMPTIVE_BASIC_AUTHENTICATIONApacheClientProperties.RETRY_HANDLER
This connector uses 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 by using default connection manager. If custom
connection manager needs to be used then chunked encoding size can be set by providing a custom
HttpClientConnection (via custom ManagedHttpClientConnectionFactory)
and overriding createOutputStream method.
Using of authorization 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.
Client operations are thread safe, the HTTP connection may be shared between different threads.
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.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classprivate static classprivate static final class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final org.apache.http.impl.client.CloseableHttpClientprivate final org.apache.http.client.CookieStoreprivate static final Loggerprivate final booleanprivate static final Stringprivate final org.apache.http.client.config.RequestConfigprivate static final org.apache.http.util.VersionInfo -
Constructor Summary
ConstructorsConstructorDescriptionApacheConnector(javax.ws.rs.client.Client client, javax.ws.rs.core.Configuration config) Create the new Apache HTTP Client connector. -
Method Summary
Modifier and TypeMethodDescriptionapply(ClientRequest clientRequest) Synchronously process client request into a response.Future<?> apply(ClientRequest request, AsyncConnectorCallback callback) Asynchronously process client request into a response.voidclose()Close connector and release all it's internally associated resources.private org.apache.http.conn.HttpClientConnectionManagercreateConnectionManager(javax.ws.rs.client.Client client, javax.ws.rs.core.Configuration config, SSLContext sslContext, boolean useSystemProperties) private org.apache.http.conn.HttpClientConnectionManagergetConnectionManager(javax.ws.rs.client.Client client, javax.ws.rs.core.Configuration config, SSLContext sslContext) org.apache.http.client.CookieStoreGet theCookieStore.private org.apache.http.HttpHostgetHost(org.apache.http.client.methods.HttpUriRequest request) org.apache.http.client.HttpClientGet theHttpClient.private org.apache.http.HttpEntitygetHttpEntity(ClientRequest clientRequest, boolean bufferingEnabled) private static InputStreamgetInputStream(org.apache.http.client.methods.CloseableHttpResponse response) getName()Get name of current connector.private static URIgetProxyUri(Object proxy) private org.apache.http.client.methods.HttpUriRequestgetUriHttpRequest(ClientRequest clientRequest) private static String[]writeOutBoundHeaders(javax.ws.rs.core.MultivaluedMap<String, Object> headers, org.apache.http.client.methods.HttpUriRequest request)
-
Field Details
-
LOGGER
-
vi
private static final org.apache.http.util.VersionInfo vi -
release
-
client
private final org.apache.http.impl.client.CloseableHttpClient client -
cookieStore
private final org.apache.http.client.CookieStore cookieStore -
preemptiveBasicAuth
private final boolean preemptiveBasicAuth -
requestConfig
private final org.apache.http.client.config.RequestConfig requestConfig
-
-
Constructor Details
-
ApacheConnector
ApacheConnector(javax.ws.rs.client.Client client, javax.ws.rs.core.Configuration config) Create the new Apache HTTP Client connector.- Parameters:
client- JAX-RS client instance for which the connector is being created.config- client configuration.
-
-
Method Details
-
getConnectionManager
private org.apache.http.conn.HttpClientConnectionManager getConnectionManager(javax.ws.rs.client.Client client, javax.ws.rs.core.Configuration config, SSLContext sslContext) -
createConnectionManager
private org.apache.http.conn.HttpClientConnectionManager createConnectionManager(javax.ws.rs.client.Client client, javax.ws.rs.core.Configuration config, SSLContext sslContext, boolean useSystemProperties) -
split
-
getHttpClient
public org.apache.http.client.HttpClient getHttpClient()Get theHttpClient.- Returns:
- the
HttpClient.
-
getCookieStore
public org.apache.http.client.CookieStore getCookieStore()Get theCookieStore.- Returns:
- the
CookieStoreinstance ornullwhen "jersey.config.apache.client.handleCookies" set totrue.
-
getProxyUri
-
apply
Description copied from interface:ConnectorSynchronously process client request into a response. The method is used by Jersey client runtime to synchronously send a request and receive a response.- Specified by:
applyin interfaceConnector- Specified by:
applyin interfaceInflector<ClientRequest,ClientResponse> - Parameters:
clientRequest- Jersey client request to be sent.- Returns:
- Jersey client response received for the client request.
- Throws:
javax.ws.rs.ProcessingException- in case of any invocation failure.
-
apply
Description copied from interface:ConnectorAsynchronously process client request into a response. The method is used by Jersey client runtime to asynchronously send a request and receive a response. -
getName
Description copied from interface:ConnectorGet name of current connector. Should contain identification of underlying specification and optionally version number. Will be used in User-Agent header. -
close
public void close()Description copied from interface:ConnectorClose connector and release all it's internally associated resources. -
getHost
private org.apache.http.HttpHost getHost(org.apache.http.client.methods.HttpUriRequest request) -
getUriHttpRequest
private org.apache.http.client.methods.HttpUriRequest getUriHttpRequest(ClientRequest clientRequest) -
getHttpEntity
private org.apache.http.HttpEntity getHttpEntity(ClientRequest clientRequest, boolean bufferingEnabled) -
writeOutBoundHeaders
-
getInputStream
private static InputStream getInputStream(org.apache.http.client.methods.CloseableHttpResponse response) throws IOException - Throws:
IOException
-