Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
xml
xml
<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
xml
xml
<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
java
java
@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)

...