replace jackson provider by:
@Provider
@Consumes("application/json")
@Provides("application/json")
public class MyProvider extends JacksonXXXProvider {}
And register this provider instead of jackson one
Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> | Blog
<https://blog-rmannibucau.rhcloud.com> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
<https://javaeefactory-rmannibucau.rhcloud.com>
2016-11-17 18:37 GMT+01:00 jieryn <[email protected]>:
> I think I am doing that, sorry I didn't include it..
>
> import javax.xml.bind.annotation.*;
> import javax.ejb.*;
> import javax.ws.rs.*;
> import javax.ws.rs.core.*;
>
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlRootElement
> public class My
> {
> private String message;
> public final String getMessage() {
> return message;
> }
> public final void setMessage(final String message) {
> this.message = message;
> }
> }
>
> @Path("my")
> @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
> @Singleton
> public class MyResource
> {
> @GET
> public My get() {
> return new My("thing-1");
> }
> }
>
>
> ...can I just disable Johnzon with some configuration file under
> src/main/tomee/conf/? or src/main/webapp/WEB-INF/?
>
>
> On Thu, Nov 17, 2016 at 12:28 PM, Romain Manni-Bucau
> <[email protected]> wrote:
> > 2016-11-17 18:12 GMT+01:00 jieryn <[email protected]>:
> >
> >> Yah, I am hard forcing the JacksonJsonProvider:
> >>
> >> import java.util.*;
> >> import javax.ws.rs.ApplicationPath;
> >> import javax.ws.rs.core.Application;
> >> import com.fasterxml.jackson.databind.ObjectMapper;
> >> import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
> >>
> >> public abstract class JacksonProviderApplication extends Application {
> >> public Set<Object> getSingletons() {
> >> return Collections.singleton((Object) new JacksonJsonProvider(new
> >> ObjectMapper()));
> >> }
> >> }
> >>
> >> @ApplicationPath("api")
> >> public class API extends JacksonProviderApplication {
> >> public Set<Class<?>> getClasses() {
> >> return Collections.unmodifiableSet(new HashSet<Class<?>>(Arrays.
> >> asList(
> >> com.acme.project.api.MyResource.class)));
> >> }
> >> }
> >>
> >>
> >> But in the stack trace in original, Johnzon is the one doing the
> >> serializing..why?? I accept Jackson may have some bugs that Johnson
> >> fixes, but right now I just need to get Jackson back in place so all
> >> of our web/js stuff continues to work right. Any ideas?
> >>
> >>
> > Read again my answer, I'm not telling you to not use jackson but how to
> > make it work. Enforce for the jackson provider the consumers/produces
> > annotations to be application/json to let jackson have the same priority
> as
> > johnzon and be used instead otherwise johnzon being more specific is
> > prioritized over jackson.
> >
> >
> >>
> >> On Fri, Nov 11, 2016 at 4:03 PM, Romain Manni-Bucau
> >> <[email protected]> wrote:
> >> > Hi
> >> >
> >> > Jackson is buggy in its consumes/produces type. Wrap the provider
> forcing
> >> > it to application/json lr other but not wildcard
> >> >
> >> > Le 11 nov. 2016 21:50, "jieryn" <[email protected]> a écrit :
> >> >
> >> >> Hi, I'm hitting another migration issue. With 1.7, we see these
> >> providers:
> >> >>
> >> >> INFO: Using providers:
> >> >> Nov 11, 2016 3:43:19 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory
> >> >> INFO: com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider@
> >> 3703a400
> >> >> Nov 11, 2016 3:43:19 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory
> >> >> INFO: com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider@
> >> 735167e1
> >> >> Nov 11, 2016 3:43:19 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory
> >> >> INFO: org.apache.openejb.server.cxf.
> rs.EJBAccessExceptionMapper@
> >> >> 22105c76
> >> >> Nov 11, 2016 3:43:19 PM org.apache.cxf.jaxrs.utils.ResourceUtils
> >> >> checkMethodDispatcher
> >> >> WARNING: No resource methods have been found for resource class
> >> >> com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
> >> >> Nov 11, 2016 3:43:19 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener logEndpoints
> >> >>
> >> >> With 7.0.1, we see these:
> >> >>
> >> >> INFO: Using readers:
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.
> PrimitiveTextProvider@629fe84
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.
> FormEncodingProvider@147c4523
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.MultipartProvider@551725e4
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.SourceProvider@760d6350
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.
> JAXBElementProvider@5cb6b81b
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.openejb.server.cxf.rs.CxfRSService$
> >> >> TomEEJsonpProvider@ab2e887
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.StringTextProvider@4daead88
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider@
> >> 6b04689e
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.BinaryDataProvider@43aa767
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.DataSourceProvider@5b3c11ce
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: Using writers:
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.StringTextProvider@4daead88
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.
> PrimitiveTextProvider@629fe84
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.
> FormEncodingProvider@147c4523
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.MultipartProvider@551725e4
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.SourceProvider@760d6350
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.
> JAXBElementProvider@5cb6b81b
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.openejb.server.cxf.rs.CxfRSService$
> >> >> TomEEJsonpProvider@ab2e887
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider@
> >> 6b04689e
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.BinaryDataProvider@43aa767
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >> INFO: org.apache.cxf.jaxrs.provider.DataSourceProvider@5b3c11ce
> >> >> Nov 11, 2016 3:45:53 PM
> >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener deployApplication
> >> >>
> >> >>
> >> >> This is causing problems for all of our arquillian tests:
> >> >>
> >> >> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 6.804
> >> >> sec <<< FAILURE! - in com.acme.project.api.MyObjResourceITest
> >> >> testGETMyObj1(com.acme.project.api.MyObjResourceITest) Time
> elapsed:
> >> >> 0.427 sec <<< ERROR!
> >> >> javax.ws.rs.client.ResponseProcessingException: Problem with reading
> >> >> the data, class com.acme.project.domain.jaxb.MyObj, ContentType:
> >> >> application/json.
> >> >> at com.acme.project.api.MyObjResourceITest.testGETMyObj1(
> >> >> MyObjResourceITest.java)
> >> >> Caused by: org.apache.johnzon.mapper.MapperException: Unable to
> parse
> >> >> 1478897152352 to class java.util.Date
> >> >> at com.acme.project.api.MyObjResourceITest.testGETMyObj1(
> >> >> MyObjResourceITest.java)
> >> >> Caused by: org.apache.johnzon.mapper.MapperException: Unable to
> parse
> >> >> 1478897152352 to class java.util.Date
> >> >> at com.acme.project.api.MyObjResourceITest.testGETMyObj1(
> >> >> MyObjResourceITest.java)
> >> >>
> >> >> Johnzon looks cool, and we will consider it for the future, but right
> >> >> now, just need to get back to the old behavior with Jackson doing all
> >> >> of our transcoding. How can I get back to that behavior? We already
> >> >> have src/main/webapp/WEB-INF/openejb-jar.xml:
> >> >>
> >> >> <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
> >> >> <pojo-deployment class-name="com.acme.project.api.API">
> >> >> <properties>
> >> >> cxf.jaxrs.skip-provider-scanning = true
> >> >> cxf.jaxrs.providers = com.fasterxml.jackson.jaxrs.
> >> >> json.JacksonJsonProvider
> >> >> </properties>
> >> >> </pojo-deployment>
> >> >>
> >> >> Thanks!
> >> >>
> >>
>