Class ClientBuilder
- java.lang.Object
-
- javax.ws.rs.client.ClientBuilder
-
- All Implemented Interfaces:
Configurable<ClientBuilder>
public abstract class ClientBuilder extends Object implements Configurable<ClientBuilder>
Main entry point to the client API used to bootstrapClient
instances.- Since:
- 2.0
- Author:
- Marek Potociar
-
-
Field Summary
Fields Modifier and Type Field Description static String
JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY
Name of the property identifying theClientBuilder
implementation to be returned fromnewBuilder()
.
-
Constructor Summary
Constructors Modifier Constructor Description protected
ClientBuilder()
Allows custom implementations to extend theClientBuilder
class.
-
Method Summary
Modifier and Type Method Description abstract Client
build()
Build a new client instance using all the configuration previously specified in this client builder.abstract ClientBuilder
connectTimeout(long timeout, TimeUnit unit)
Set the connect timeout.abstract ClientBuilder
executorService(ExecutorService executorService)
Set the client-sideExecutorService
.abstract ClientBuilder
hostnameVerifier(HostnameVerifier verifier)
Set the hostname verifier to be used by the client to verify the endpoint's hostname against it's identification information.abstract ClientBuilder
keyStore(KeyStore keyStore, char[] password)
Set the client-side key store.ClientBuilder
keyStore(KeyStore keyStore, String password)
Set the client-side key store.static ClientBuilder
newBuilder()
Create a newClientBuilder
instance using the default client builder implementation class provided by the implementation provider.static Client
newClient()
Create a newClient
instance using the default client builder implementation class provided by the implementation provider.static Client
newClient(Configuration configuration)
Create a new custom-configuredClient
instance using the default client builder implementation class provided by the implementation provider.abstract ClientBuilder
readTimeout(long timeout, TimeUnit unit)
Set the read timeout.abstract ClientBuilder
scheduledExecutorService(ScheduledExecutorService scheduledExecutorService)
Set the client-sideScheduledExecutorService
.abstract ClientBuilder
sslContext(SSLContext sslContext)
Set the SSL context that will be used when creating secured transport connections to server endpoints fromweb targets
created by the client instance that is using this SSL context.abstract ClientBuilder
trustStore(KeyStore trustStore)
Set the client-side trust store.abstract ClientBuilder
withConfig(Configuration config)
Set the internal configuration state to an externally provided configuration state.
-
-
-
Field Detail
-
JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY
public static final String JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY
Name of the property identifying theClientBuilder
implementation to be returned fromnewBuilder()
.- See Also:
- Constant Field Values
-
-
Method Detail
-
newBuilder
public static ClientBuilder newBuilder()
Create a newClientBuilder
instance using the default client builder implementation class provided by the implementation provider.- Returns:
- new client builder instance.
-
newClient
public static Client newClient()
Create a newClient
instance using the default client builder implementation class provided by the implementation provider.- Returns:
- new client instance.
-
newClient
public static Client newClient(Configuration configuration)
Create a new custom-configuredClient
instance using the default client builder implementation class provided by the implementation provider.- Parameters:
configuration
- data used to provide initial configuration for the new client instance.- Returns:
- new configured client instance.
-
withConfig
public abstract ClientBuilder withConfig(Configuration config)
Set the internal configuration state to an externally provided configuration state.- Parameters:
config
- external configuration state to replace the configuration of this configurable instance.- Returns:
- the updated client builder instance.
-
sslContext
public abstract ClientBuilder sslContext(SSLContext sslContext)
Set the SSL context that will be used when creating secured transport connections to server endpoints fromweb targets
created by the client instance that is using this SSL context. The SSL context is expected to have all the security infrastructure initialized, including the key and trust managers.Setting a SSL context instance resets any
key store
ortrust store
values previously specified.- Parameters:
sslContext
- secure socket protocol implementation which acts as a factory for secure socket factories orSSL engines
. Must not benull
.- Returns:
- an updated client builder instance.
- Throws:
NullPointerException
- in case thesslContext
parameter isnull
.- See Also:
keyStore(java.security.KeyStore, char[])
,keyStore(java.security.KeyStore, String)
,trustStore(java.security.KeyStore)
-
keyStore
public abstract ClientBuilder keyStore(KeyStore keyStore, char[] password)
Set the client-side key store. Key store contains client's private keys, and the certificates with their corresponding public keys.Setting a key store instance resets any
SSL context instance
value previously specified.Note that a custom key store is only required if you want to enable a custom setup of a 2-way SSL connections (client certificate authentication).
- Parameters:
keyStore
- client-side key store. Must not benull
.password
- client key password. Must not benull
.- Returns:
- an updated client builder instance.
- Throws:
NullPointerException
- in case any of the supplied parameters isnull
.- See Also:
sslContext(javax.net.ssl.SSLContext)
,keyStore(java.security.KeyStore, String)
,trustStore(java.security.KeyStore)
-
keyStore
public ClientBuilder keyStore(KeyStore keyStore, String password)
Set the client-side key store. Key store contains client's private keys, and the certificates with their corresponding public keys.Setting a key store instance resets any
SSL context instance
value previously specified.Note that for improved security of working with password data and avoid storing passwords in Java string objects, the
keyStore(java.security.KeyStore, char[])
version of the method can be utilized. Also note that a custom key store is only required if you want to enable a custom setup of a 2-way SSL connections (client certificate authentication).- Parameters:
keyStore
- client-side key store. Must not benull
.password
- client key password. Must not benull
.- Returns:
- an updated client builder instance.
- Throws:
NullPointerException
- in case any of the supplied parameters isnull
.- See Also:
sslContext(javax.net.ssl.SSLContext)
,keyStore(java.security.KeyStore, char[])
,trustStore(java.security.KeyStore)
-
trustStore
public abstract ClientBuilder trustStore(KeyStore trustStore)
Set the client-side trust store. Trust store is expected to contain certificates from other parties the client is you expect to communicate with, or from Certificate Authorities that are trusted to identify other parties.Setting a trust store instance resets any
SSL context instance
value previously specified.In case a custom trust store or custom SSL context is not specified, the trust management will be configured to use the default Java runtime settings.
- Parameters:
trustStore
- client-side trust store. Must not benull
.- Returns:
- an updated client builder instance.
- Throws:
NullPointerException
- in case the supplied trust store parameter isnull
.- See Also:
sslContext(javax.net.ssl.SSLContext)
,keyStore(java.security.KeyStore, char[])
,keyStore(java.security.KeyStore, String)
-
hostnameVerifier
public abstract ClientBuilder hostnameVerifier(HostnameVerifier verifier)
Set the hostname verifier to be used by the client to verify the endpoint's hostname against it's identification information.- Parameters:
verifier
- hostname verifier.- Returns:
- an updated client builder instance.
-
executorService
public abstract ClientBuilder executorService(ExecutorService executorService)
Set the client-sideExecutorService
.Provided executor service will be used for executing asynchronous tasks.
When running in a Jakarta EE container, implementations are required to use the container-managed executor service by default. In Java SE, the default is implementation-specific. In either case, calling this method will override the default.
- Parameters:
executorService
- executor service to be used for async invocations.- Returns:
- an updated client builder instance.
- Since:
- 2.1
- See Also:
Invocation.Builder.async()
,Invocation.Builder.rx()
,RxInvokerProvider.getRxInvoker(SyncInvoker, ExecutorService)
-
scheduledExecutorService
public abstract ClientBuilder scheduledExecutorService(ScheduledExecutorService scheduledExecutorService)
Set the client-sideScheduledExecutorService
.Provided executor service will be used for executing scheduled asynchronous tasks.
When running in a Jakarta EE container, implementations are required to use the container-managed scheduled executor service by default. In Java SE the default is implementation-specific. In either case, calling this method will override the default.
- Parameters:
scheduledExecutorService
- executor service to be used for scheduled async invocations.- Returns:
- an updated client builder instance.
- Since:
- 2.1
- See Also:
SseEventSource.Builder.reconnectingEvery(long, TimeUnit)
-
connectTimeout
public abstract ClientBuilder connectTimeout(long timeout, TimeUnit unit)
Set the connect timeout.Value
0
represents infinity. Negative values are not allowed.- Parameters:
timeout
- the maximum time to wait.unit
- the time unit of the timeout argument.- Returns:
- an updated client builder instance.
- Throws:
IllegalArgumentException
- when the value is negative.- Since:
- 2.1
-
readTimeout
public abstract ClientBuilder readTimeout(long timeout, TimeUnit unit)
Set the read timeout.The value is the timeout to read a response. If the server doesn't respond within the defined timeframe,
ProcessingException
is thrown withTimeoutException
as a cause.Value
0
represents infinity. Negative values are not allowed.- Parameters:
timeout
- the maximum time to wait.unit
- the time unit of the timeout argument.- Returns:
- an updated client builder instance.
- Throws:
IllegalArgumentException
- when the value is negative.- Since:
- 2.1
-
build
public abstract Client build()
Build a new client instance using all the configuration previously specified in this client builder.- Returns:
- a new client instance.
-
-