Jersey - 返回XmlRootElement / Entities的列表 - 找不到MessageBodyWriter

时间:2014-08-14 22:55:36

标签: java json jaxb jersey jax-rs

这些JAX-RS序列化雪花中有一百万个。我再补充一点。

我有一个JPA / JAXb注释类:

@Entity
@XmlRootElement
public class Foo implements Serializable {
//..
}

我有一个服务,试图将这些对象的列表作为JSON返回:

@Path("foo")
public class FooService {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response listFoos() {
        // get hibernate session
        List<Foo> foos = session.createQuery("from Foo").list();
        GenericEntity<List<Foo>> entity = new GenericEntity<List<Foo>>(foos) {};
        return Response.ok(entity).build();
    }
}

我尝试了很多变化。看起来最好的那个对我来说就像

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Foo> listFoos() {
        // get session ..
        return session.createQuery("from Foo").list();
    }

所有人都给我一些细微的变化:

SEVERE: MessageBodyWriter not found for
media type=application/json, type=class java.util.ArrayList, 
genericType=java.util.List<com.bar.baz.Foo>.

1 个答案:

答案 0 :(得分:1)

不要忘记添加依赖项,如:

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
    </dependency>