Using JAX-RS 2.0 context objects to obtain more information about requests
Java API for RESTful Web Services (JAX-RS) 2.0 provides different types of context to
application subclasses, root resource classes, and providers. You can use the
@Context
annotation to inject context objects such as HttpHeaders, UriInfo,
HttpServletRequest into class field or method parameter in application subclasses, root resource
classes, and providers.
About this task
You can use the following context objects that are available
to providers (client and server), resource classes (server only), and Application
subclasses (server only):
Context object | Type | Description |
---|---|---|
Application |
Class | The instance of the application-supplied Application subclass can be injected into a class field or method parameter
using the @Context annotation. Access to the Application
subclass instance allows configuration information to be centralized
in that class. Note: This
Application subclass cannot
be injected into the Application subclass itself
since this would create a circular dependency. |
UriInfo |
Interface | The UriInfo interface provides static and
dynamic, per-request information, about the components of a request
URI. |
HttpHeaders |
Interface | The HttpHeaders interface provides access
to request header information either in map form or via strongly typed
convenience methods. |
Request |
Interface | The Request interface allows a caller to
determine the best matching representation variant and to evaluate
whether the current state of the resource matches any preconditions
in the request. |
SecurityContext |
Interface | The SecurityContext interface provides access
to information about the security context of the current request. |
Providers |
Interface | The Providers interface allows for lookup
of provider instances based on a set of search criteria. |
ResourceContext |
Interface | The ResourceContext interface provides access
to instantiation and initialization of resource or subresource classes
in the default per-request scope. |
Configuration |
Interface | Both the client and the server runtime configurations are
available for injection via @Context . These configurations
are available for injection in providers (client or server) and resource
classes (server only). |