0

I am facing an exception on the JAX-RS Client side when I am trying to test JSON data exchange. I am using Jersey 2.10, JDK1.7, Tomcat7.0. Can someone please advise what steps, with examples, that I need to undertake to make this work. I have no ContextResolver, Provider, MessageBodyWriter/Reader configured on the client side as of now.

Following is the exception stack trace,

    SEVERE: MessageBodyWriter not found for media type=application/json, type=class org.vedvrat.jaxrs.model.Customer, genericType=class org.vedvrat.jaxrs.model.Customer.
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class org.vedvrat.jaxrs.model.Customer, genericType=class org.vedvrat.jaxrs.model.Customer.
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
    at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1154)
    at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:500)
    at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:315)
    at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:227)
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:224)
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:656)
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:653)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424)
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:653)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:413)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:322)
    at org.vedvrat.jaxrs.client.bbc.six.JSONRequestTest.main(JSONRequestTest.java:40)
VedVrat
  • 103
  • 3
  • 12

2 Answers2

2

You need to register one of the JSON JAX-RS providers. See a chapter dedicated to various JSON providers in Jersey User Guide. Basically, after picking a provider and adding appropriate modules on your class path, you need to register a provider in Jersey runtime, e.g. for Jackson it would be:

Client client = ClientBuilder.newClient().register(JacksonFeature.class);

See also Registering Resources and Providers in Jersey 2 to find out how this concept works.

Michal Gajdos
  • 10,339
  • 2
  • 43
  • 42
0

you have to add genson-1.3.jar, it worked in my case