简体   繁体   中英

JSON RestWebservice in Java Jersey

I can't seem to figure out Why I am getting this Exception when trying to return JSON from Jersey REST webservice.

I have a web dynamic project with Jersey, No Maven.

Aug 20, 2014 2:15:16 AM com.sun.jersey.spi.container.ContainerResponse logException
SEVERE: Mapped exception to response: 500 (Internal Server Error)
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message   body writer for Java class com.examples.rest.StoredSearch, and Java type class   com.examples.rest.StoredSearch, and MIME media type application/json was not found


    //web.xml

   <servlet>
    <servlet-name>jersey-Employee-serlvet</servlet-name>
    <servlet-class>
                 com.sun.jersey.spi.container.servlet.ServletContainer
            </servlet-class>
    <init-param>
         <param-name>com.sun.jersey.config.property.packages</param-name>
         <param-value>com.examples.rest</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-Employee-serlvet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

</web-app>

//under WEB-INF/lib asm-3.1jar
jersey-core-1.16.jar
jersey-json-1.16.jar
jersey-server-1.16.jar
jersey-servlet-1.16.jar

I also added jersey-json-1.16.jar to build path.

//@XmlRootElement
public class StoredSearch {
String username;
String name;
String description;
Date created;

public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username=username;
}

public String getName() {
    return name;
}
public void setName(String name) {
    this.name=name;
}

public String getDescription() {
    return description;
}
public void setDescription(String description) {
    this.description=description;
}

public Date getCreated() {
    return created;
}
public void setCreated(Date created) {
    this.created = created;
}

@Override
public String toString() {
    return "StoredSearch [username=" + username + ", name=" + name + ", description=" +   description + ", created=" + created + "]";
}


@GET
@Path("/search/{a}")
@Produces(MediaType.APPLICATION_JSON)
public StoredSearch getStoredSearch(@PathParam("a") String user){

    StoredSearch ss = new StoredSearch();
    ss.setUsername("ssss");
    ss.setName("yoo");
    ss.setDescription("description of something");
    ss.setCreated(new Date());

    //return ss.toString();
    return ss;

Add jaxb-api-XXX.jar in your project.

and use @XmlRootElement in your pojo,

JAX-RS supports an automatic mapping from JAXB annotated class to XML and JSON.

it works for me.

I was also facing the similar issues this issue is due to the JARS missing so tried with these JARS and I solved the problem i think this will work.

List of JARS :

 1. asm-3.1.jar
 2. jackson-core-asl-1.9.2.jar
 3. jackson-mapper-asl-1.9.2.jar
 4. jackson-jaxrs-1.9.2.jar    
 5. jackson-xc-1.9.2.jar.
 6. jersey-client-1.17.1.jar.
 7. jersey-core-1.17.1.jar.
 8. jersey-json-1.17.1.jar.
 9. jersey-server-1.17.1.jar
10.jersey-servlet-1.17.1.jar
11.jettison-1.1.jar 
12.jsr311-api-1.1.1.jar

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM