Thanks a lot Romain,
by setting cxf.jaxrs.skip-provider-scanning = true
MyJaxrsProvider registered only once.
Thanks,Ravisankar Challa
On Thursday, 12 May 2016 1:15 AM, Romain Manni-Bucau
<[email protected]> wrote:
Hi
you can add cxf.jaxrs.skip-provider-scanning = true (otherwise no need of
openejb-jar.xml since your provider will get scanned by default)
then it shouldn't be an issue johnzon providers are there since yours should be
taken first since these providers are on the CXf bus so they are less
prioritized.
Romain Manni-Bucau
@rmannibucau | Blog | Github | LinkedIn | Tomitriber | JavaEE Factory
2016-05-11 17:12 GMT+02:00 ravi sankar <[email protected]>:
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