Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jersey Exception : SEVERE: A message body reader for Java class

I have a Jersey based Rest WS which outputs JSON. I am implementing a Jersey Client to invoke the WS and consume the JSON response. The client code I have is below

 WebResource r = restClient.resource(UriBuilder.fromUri("http://localhost/").port(8080).build()); String resp = r.path("/user").accept(MediaType.APPLICATION_JSON).get(String.class); User[] users = r.path("/user").accept(MediaType.APPLICATION_JSON).get(User[].class); 

The 2nd line outputs the JSON string response correctly, however the 3rd line to marshal JSON to the POJO is not happening and I get the following exception stacktrace

 SEVERE: A message body reader for Java class [Lorg.shoppingsite.model.entity.jpa.User;, and Java type class [Lorg.shoppingsite.model.entity.jpa.User;, and MIME media type application/json was not found Dec 21, 2011 11:32:01 AM com.sun.jersey.api.client.ClientResponse getEntity SEVERE: The registered message body readers compatible with the MIME media type are: */* ->   com.sun.jersey.core.impl.provider.entity.FormProvider   com.sun.jersey.core.impl.provider.entity.StringProvider   com.sun.jersey.core.impl.provider.entity.ByteArrayProvider   com.sun.jersey.core.impl.provider.entity.FileProvider   com.sun.jersey.core.impl.provider.entity.InputStreamProvider   com.sun.jersey.core.impl.provider.entity.DataSourceProvider   com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General   com.sun.jersey.core.impl.provider.entity.ReaderProvider   com.sun.jersey.core.impl.provider.entity.DocumentProvider   com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader   com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader   com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader   com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General   com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General   com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General   com.sun.jersey.core.impl.provider.entity.EntityHolderReader 

I have the correct MIME TYPES in my request. My POJO has been annotated with XMLRootElement. What am I missing.

Thank you

like image 334
VDev Avatar asked Dec 21 '11 18:12

VDev


1 Answers

To make it work you only need two things. Check if you are missing:

  1. First of all, you need @XmlRootElement annotation for your object class/entity.
  2. You need to add dependency for jersey-json if you are missing.For your reference I added this dependency into my pom.xml.

    <dependency>     <groupId>com.sun.jersey</groupId>     <artifactId>jersey-json</artifactId>     <version>1.17.1</version> </dependency> 
like image 148
user2139024 Avatar answered Sep 20 '22 09:09

user2139024