TomEE,CXF和Jackson - 没有为响应类找到消息正文撰稿人

时间:2014-07-21 20:08:48

标签: java jackson jax-rs tomee

尝试进入TomEE,并且在创建生成JSON的JAX-RS资源时遇到一些困难。

使用tomee-maven-plugin启动TomEE:

        <plugin>
            <groupId>org.apache.openejb.maven</groupId>
            <artifactId>tomee-maven-plugin</artifactId>
            <version>1.6.0.2</version>
            <configuration>
                <tomeeVersion>1.6.0.2</tomeeVersion>
                <tomeeClassifier>plus</tomeeClassifier>
                <config>${project.basedir}/src/test/resources</config>
                <libs>
                    <lib>mysql:mysql-connector-java:5.1.31</lib>
                    <lib>com.fasterxml.jackson.core:jackson-core:${jackson-version}</lib>
                    <lib>com.fasterxml.jackson.core:jackson-annotations:${jackson-version}</lib>
                    <lib>com.fasterxml.jackson.core:jackson-databind:${jackson-version}</lib>
                    <lib>com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:${jackson-version}</lib>
                    <lib>com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:${jackson-version}</lib>
                </libs>
            </configuration>
        </plugin>

system.properties:

openejb.cxf.jax-rs.providers = com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider, com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider

不幸的是,在做出请求时我似乎仍然得到:

WARNING: No message body writer has been found for response class Server

使用简单的JAX-RS方法:

@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Server find(@Context HttpServletRequest request, @PathParam("id") int id) {
    return repository.findOrNull(id);
}

其中'Server'类只是一个简单的JPA Entity / Bean。

我可能错过了一些愚蠢的事情。

1 个答案:

答案 0 :(得分:1)

事实证明,CXF需要@XmlRootElement。我只有Jersey作为JSON映射器的经验。