Search code examples
javajerseyjax-rs

What objects can I inject using the @Context annotation?


I'm new to JAX-RS and I'm trying to understand how the @Context annotation is supposed to work.

At the javadoc there is a list of six classes (Application, UriInfo, Request, HttpHeaders, SecurityContext, Providers). However I find code on the web that use the this annotation with other types, for example:

@GET
public String something(@Context HttpServletRequest req) {

}

Is there a list of supported types that can be used with this annotations? Does this list change between implementation of the standard?

I'm currently experimenting with Jersey and I'm worried that I'll write code that cannot be ported to other JAX-RS implementation.


Solution

  • The riveting JAX-RS specification defines all the standard types you can inject via @Context.

    But if I were you, I would just consult the specific documentation of your chosen provider to see what is available.

    For example, RESTEasy provides these values via @Context. Meanwhile, Jersey provides these. Obviously there will be overlap because of the standard context values.