...
Code Block |
---|
|
<bean id="depthProperties" class="org.apache.cxf.staxutils.DocumentDepthProperties">
<property name="innerElementCountThreshold" value="500"/>
</bean>
<bean id="jaxbProvider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="depthProperties" ref="depthProperties"/>
</bean>
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="depthProperties" ref="depthProperties"/>
</bean>
<jaxrs:server id="endpoint1">
<jaxrs:serviceBeans>
<bean class="my.package.RootResource"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jaxbProvider"/>
<ref bean="jsonProvider"/>
</jaxrs:providers>
</jaxrs:server>
<jaxrs:server id="endpoint2">
<jaxrs:serviceBeans>
<bean class="my.package.RootResource"/>
</jaxrs:serviceBeans>
<jaxrs:properties>
<entry key="depthInnerElementCountThreshold" value="500"/
</jaxrs:properties>
</jaxrs:server>
|
JSR-353 JSON Processing
As per JAX-RS 2.0 specification, the support of JSR-353 Java API for JSON Processing is mandatory requirement and implies the support of following types: JsonStructure, JsonArray and JsonObject. The Apache CXF provides such a support in a form of JsrJsonpProvider provider distributed by Apache CXF JAX-RS Extensions Providers module (cxf-rt-rs-extension-providers).
Code Block |
---|
|
<jaxrs:providers>
<bean class="org.apache.cxf.jaxrs.provider.jsrjsonp.JsrJsonpProvider"/>
</jaxrs:providers>
|
Adding JsrJsonpProvider provider alone (or in a combination with other providers) allows JAX-RS resources natively use JsonStructure, JsonArray, JsonObject as input parameters or return results. For example:
Code Block |
---|
|
@GET
@Path("/books")
@Produces(MediaType.APPLICATION_JSON)
public JsonArray getBooks() {
// Implementation here
}
@GET
@Path("/books/{bookId}")
@Produces(MediaType.APPLICATION_JSON)
public JsonObject getBook(@PathParam("bookId") Long id) {
// Implementation here
}
@POST
@Path("/books")
@Consumes(MediaType.APPLICATION_JSON)
public Response addBook(@Context final UriInfo uriInfo, JsonObject obj) {
// Implementation here
} |
The JsrJsonpProvider provider could be used on server side or on a client side. By default, the provider uses JSR-353 Java API for JSON Processing reference implementation to read/write message bodies.
JSON With Padding (JSONP)
...