Red Hat Training
A Red Hat training course is available for Red Hat Fuse
46.5. Configuring the Client Endpoint
It is possible to augment the functionality of the base
javax.ws.rs.client.Clientobject by registering and configuring features and providers.
The following example shows a client configured to have a logging feature, a custom entity provider, and to set the
// Java import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Client; import org.apache.cxf.feature.LoggingFeature; ... Client client = ClientBuilder.newClient(); client.register(LoggingFeature.class) .register(MyCustomEntityProvider.class) .property("LoggingFeature.prettyLogging","true");
Configurable API for registering objects
Clientclass supports the
ConfigurableAPI for registering objects, which provides several variants of the
registermethod. In most cases, you would register either a class or an object instance, as shown in the following examples:
client.register(LoggingFeature.class) client.register(new LoggingFeature())
For more details about the
registervariants, see the reference documentation for
What can you configure on the client?
You can configure the following aspects of a client endpoint:
javax.ws.rs.core.Featureis effectively a plug-in that adds an extra feature or functionality to a JAX-RS client. Often, a feature installs one or more interceptors in order to provide the required functionality.
A provider is a particular kind of client plug-in that provides a mapping capability. The JAX-RS 2.0 specification defines the following kinds of provider:
- Entity providers
- An entity provider provides the capability of mapping between a specific media type a Java type. For more details, see Section 46.4, “Parsing Requests and Responses”.
- Exception mapping providers
- An exception mapping provider maps a checked runtime exception to an instance of
- Context providers
- A context provider is used on the server side, to supply context to resource classes and other service providers.
A JAX-RS 2.0 filter is a plug-in that gives you access to the URI, headers, and miscellaneous context data at various points (extension points) of the message processing pipeline. For details, see Chapter 58, JAX-RS 2.0 Filters and Interceptors.
A JAX-RS 2.0 interceptor is a plug-in that gives you access to the message body of a request or response as it is being read or written. For details, see Chapter 58, JAX-RS 2.0 Filters and Interceptors.
By setting one or more properties on the client, you can customize the configuration of a registered feature or a registered provider.
Other configurable types
It is possible, not only to configure a
javax.ws.rs.client.ClientBuilder) object, but also a
WebTargetobject. When you change the configuration of a
WebTargetobject, the underlying client configuration is deep copied to give the new
WebTargetconfiguration. Hence, it is possible to change the configuration of the
WebTargetobject without changing the configuration of the original