Since the default org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider
doesn't support application/*+json
I have created a simple provider extending JsonbJaxrsProvider
@Provider
@Produces({ "application/json", "application/*+json" })
@Consumes({ "application/json", "application/*+json" })
public class MyJsonbJaxRsProvider<T> extends JsonbJaxrsProvider<T> {
@Override
public boolean isWriteable(final Class<?> rawType, final Type genericType,
final Annotation[] annotations,
final MediaType mediaType) {
return super.isWriteable(rawType, genericType, annotations, mediaType)
&& !OutputStream.class.isAssignableFrom(rawType) &&
!StreamingOutput.class.isAssignableFrom(rawType)
&& !Writer.class.isAssignableFrom(rawType) &&
!Response.class.isAssignableFrom(rawType)
&& !JsonStructure.class.isAssignableFrom(rawType);
}
}
Then added openejb-jar.xml in WEB-INF
<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openejb.org/openejb-jar/1.1">
<pojo-deployment class-name="jaxrs-application">
<properties>
cxf.jaxrs.providers = com.example.MyJsonbJaxRsProvider
</properties>
</pojo-deployment>
</openejb-jar>
Application is working fine but
I am seeing three MyJsonbJaxRsProvider registered in readers and writers, the
default TomEEJohnzonProvider is also resgistered
Am I doing something wrong
I am using Tomee 7.0.0-M3 and Johnzon 0.9.3
INFO - Using readers:
INFO - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@1aae0dc
INFO - org.apache.cxf.jaxrs.provider.FormEncodingProvider@17cf664
INFO - org.apache.cxf.jaxrs.provider.MultipartProvider@1f91b
INFO - org.apache.cxf.jaxrs.provider.SourceProvider@216e3d
INFO - org.apache.cxf.jaxrs.provider.JAXBElementProvider@a7c9e5
INFO - com.example.MyJsonbJaxRsProvider@3ede03
INFO - com.example.MyJsonbJaxRsProvider@1c432be
INFO - com.example.MyJsonbJaxRsProvider@c7e6fd
INFO -
org.apache.openejb.server.cxf.rs.CxfRSService$TomEEJohnzonProvider@11929da
INFO -
org.apache.openejb.server.cxf.rs.CxfRSService$TomEEJsonpProvider@17dab5b
INFO - org.apache.cxf.jaxrs.provider.StringTextProvider@63e761
INFO - org.apache.cxf.jaxrs.provider.BinaryDataProvider@7feea8
INFO - org.apache.cxf.jaxrs.provider.DataSourceProvider@18669b
INFO - Using writers:
INFO - org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@19385eb
INFO - org.apache.cxf.jaxrs.provider.StringTextProvider@63e761
INFO - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@1aae0dc
INFO - org.apache.cxf.jaxrs.provider.FormEncodingProvider@17cf664
INFO - org.apache.cxf.jaxrs.provider.MultipartProvider@1f91b
INFO - org.apache.cxf.jaxrs.provider.SourceProvider@216e3d
INFO - org.apache.cxf.jaxrs.provider.JAXBElementProvider@a7c9e5
INFO - com.example.MyJsonbJaxRsProvider@3ede03
INFO - com.example.MyJsonbJaxRsProvider@1c432be
INFO - com.example.MyJsonbJaxRsProvider@c7e6fd
INFO -
org.apache.openejb.server.cxf.rs.CxfRSService$TomEEJohnzonProvider@11929da
INFO -
org.apache.openejb.server.cxf.rs.CxfRSService$TomEEJsonpProvider@17dab5b
INFO - org.apache.cxf.jaxrs.provider.BinaryDataProvider@7feea8
INFO - org.apache.cxf.jaxrs.provider.DataSourceProvider@18669b
INFO - Using exception mappers:
INFO - org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@dc2097
INFO - org.apache.openejb.server.cxf.rs.EJBExceptionMapper@1f3948a
INFO - org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@f01211