相关疑难解决方法(0)

Java类java.util.ArrayList的消息体编写器

在访问我的jax-rs资源时,我收到了以下堆栈跟踪.

我正在使用Tomcat 7,Jersey 1.12和Hibernate 4以及MySQL.

我在搜索解决方案时找到了本教程:http://aruld.info/handling-generified-collections-in-jersey-jax-rs/但是列出的所有示例似乎都不起作用.

我在这里错过了什么?

请不要让我写的答案MessageBodyWriters,这应该可以解决问题.(而且我知道有一个解决方案,我无法弄明白.)

这是我的所有罐子:

antlr-2.7.7.jar
asm-3.1.jar
commons-collections-3.2.1.jar
dom4j-1.6.1.jar
gson-1.7.1.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.1.0.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
javassist-3.15.0-GA.jar
jboss-logging-3.1.0.CR2.jar
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
jersey-client-1.12.jar
jersey-core-1.12.jar
jersey-json-1.12.jar
jersey-server-1.12.jar
jersey-servlet-1.12.jar
jettison-1.1.jar
jsr311-api-1.1.1.jar
mysql-connector-java-3.1.12-bin.jar
Run Code Online (Sandbox Code Playgroud)

这是我的资源类和方法:

@Path("/region")
public class RegionService {
    // This method is called if TEXT_PLAIN is request
    @GET
    @Produces(MediaType.APPLICATION_JSON)   
    public JResponse<List<Region>> region() {
        RegionDao regionDao = new RegionDao();
        regionDao.openSession();
        List<Region> regions = regionDao.getAll();
        regionDao.closeSession();
        return JResponse.ok(regions).build();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪:

SEVERE: Mapped exception to response: …
Run Code Online (Sandbox Code Playgroud)

java list jax-rs jersey

28
推荐指数
3
解决办法
5万
查看次数

如何使用JAXB使用Jersey 1.6生成JSON输出

@XmlRootElement
public class Todo {
    private String s = "test";

    public String getS() {
        return s;
    }

    public void setS(String s) {
        this.s = s;
    }

}
Run Code Online (Sandbox Code Playgroud)

和服务:

@Path("/test")
public class Service {

    @GET
    @Produces({MediaType.APPLICATION_JSON })
    public List<Todo> getAllGadgets() {
        return Arrays.asList(new Todo[] { new Todo() });
    }

}
Run Code Online (Sandbox Code Playgroud)

我的web.xml:

<servlet>
    <servlet-name>Jersey REST Service</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.test</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

如果我将MediaType.APPLICATION_XML设置为生成注释,则所有这些都有效.但对于JSON,我得到以下异常:

严重:映射异常响应:500(内部服务器错误)javax.ws.rs.WebApplicationException:com.sun.jersey.api.MessageException:Java类java.util.Arrays $ ArrayList和Java类型java的消息体编写器找不到.util.List和MIME媒体类型application/json

我使用Jersey 1.6,根据教程,JSON格式应该可以在没有任何额外编程的情况下使用JAXB.怎么了?

java rest json jax-rs jackson

27
推荐指数
4
解决办法
4万
查看次数

标签 统计

java ×2

jax-rs ×2

jackson ×1

jersey ×1

json ×1

list ×1

rest ×1