JAX-RS - Configuration

[Updated: Nov 30, 2017, Created: Nov 22, 2017]

Configuration can be used to access components and the meta-data for the configured context. Following is the declaration of this interface:

package javax.ws.rs.core;
public interface Configuration {
      * Returns configuration context runtime type enum.
      * either RuntimeType.CLIENT or RuntimeType.SERVER
    public RuntimeType getRuntimeType();

      * Returns the immutable view of configuration properties.
      * This includes the properties defined by the current Application.
    public Map<String, Object> getProperties();

      * Returns the property value for the specified property name.
    public Object getProperty(String name);

      * Returns Collection of all property names
    public Collection<String> getPropertyNames();

      * Returns true if the feature instance has been previously enabled in this
      * configuration context, false otherwise.
    public boolean isEnabled(Feature feature);

      * Returns true if a feature of a given class has been previously enabled in this
      * configuration context, false otherwise.
    public boolean isEnabled(Class<? extends Feature> featureClass);

      * Returns true if the component instance has been previously registered in this
      * configuration context, false otherwise.
    public boolean isRegistered(Object component);

    * Returns true if a component of a given class has been previously registered in this
    * configuration context, false otherwise.
    public boolean isRegistered(Class<?> componentClass);

      * Returns map of extension contracts and their priorities for which the component class
      * is registered.
    public Map<Class<?>, Integer> getContracts(Class<?> componentClass);

      * Returns the immutable set of registered JAX-RS component classes.
    public Set<Class<?>> getClasses();

    * Returns the immutable set of registered JAX-RS component instances.
    public Set<Object> getInstances();

The instance of this interface can be injected with @Context annotation.

In the following example, we will see how to access current context properties. We will be covering others in future tutorials.


public class ExampleResource {
  private Configuration configuration;

  public String getResponse() {
      Map<String, Object> properties = configuration.getProperties();
      properties.forEach((k, v) -> System.out.println(k + " = " + v));
      return "test response";
public class MyApp extends Application {
  public Map<String, Object> getProperties() {
      Map<String, Object> map = new HashMap<>();
      map.put("TEST_PROP", "100");
      return map;

To try examples, run embedded tomcat (configured in pom.xml of example project below):

mvn tomcat7:run-war

The client

public class ExampleClient {
  public static void main(String[] args) {
      Client client = ClientBuilder.newClient();
      WebTarget target =
      Response response = target.request()
      System.out.printf("status: %s%n", response.getStatus());
      System.out.printf("-- response body --%n%s%n", response.readEntity(String.class));


status: 200
-- response body --
test response

Output On Server console

javax.servlet.context.tempdir = D:\LogicBig\example-projects\jax-rs\context-configuration-example\target\tomcat\work\Tomcat\localhost\_
org.apache.catalina.resources = org.apache.naming.resources.ProxyDirContext@4beddcf7
org.apache.tomcat.util.scan.MergedWebXml = <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
org.apache.tomcat.InstanceManager = org.apache.catalina.core.DefaultInstanceManager@3140b355
org.apache.catalina.jsp_classpath = /D:/jax-rs/context-configuration-example/target/context-configuration-example......
javax.websocket.server.ServerContainer = org.apache.tomcat.websocket.server.WsServerContainer@2839eb58
org.apache.tomcat.JarScanner = org.apache.tomcat.util.scan.StandardJarScanner@1cbf3ccf

Example Project

Dependencies and Technologies Used :

  • jersey-server 2.25.1: Jersey core server implementation.
  • jersey-container-servlet 2.25.1: Jersey core Servlet 3.x implementation.
  • JDK 1.8
  • Maven 3.3.9

'@Context Configuration' Example Select All Download
  • context-configuration-example
    • src
      • main
        • java
          • com
            • logicbig
              • example

See Also