Juneau JAX-RS Provider
The Juneau framework contains the juneau-rest-server-jaxrs bundle for performing simple
integration of Juneau serializers and parsers in JAX-RS compliant environments.
It should be noted that although some of the functionality of the Juneau Server API is provided through the JAX-RS
integration components, it is not nearly as flexible as using the {@link oajr.RestServlet} class directly.
What you can do with the Juneau JAX-RS provider classes:
-
Use existing Juneau serializers and parsers for converting streams to POJOs and vis-versa.
-
Use annotations to specify filters and properties using the {@link oajr.annotation.RestMethod @RestMethod}
and {@link oajr.jaxrs.JuneauProvider} annotations.
What you can't do with the Juneau JAX-RS provider classes:
-
Specify or override serializers/parsers at the Java class and method levels.
JAX-RS does not provide the capability to use different providers for the same media types
at the class or method levels.
-
Specify or override filters and properties at the Java class level.
-
Default stylesheets for the {@link oaj.html.HtmlDocSerializer} class.
It will produce HTML, but it won't contain any styles applied.
-
The ability to specify HTTP method, headers, and content using GET parameters.
These make debugging REST interfaces using only a browser possible.
-
Class or method level encoding.
-
Class or method level guards.
-
Class or method level converters.
The Juneau JAX-RS provider API consists of the following classes:
-
{@link oajr.jaxrs.BaseProvider} - The base provider class that implements the JAX-RS
MessageBodyReader and MessageBodyWriter interfaces.
-
{@link oajr.jaxrs.JuneauProvider} - Annotation that is applied to subclasses of BaseProvider
to specify the serializers/parsers associated with a provider, and optionally filters and properties to
apply to those serializers and parsers.
-
{@link oajr.jaxrs.BasicProvider} - A default provider that provides the same level
of media type support as the {@link oajr.BasicRestServlet} class.
For the most part, when using these components, you'll either use the existing BasicProvider,
or define your own by subclassing BaseProvider.