尝试进入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。
我可能错过了一些愚蠢的事情。
答案 0 :(得分:1)
事实证明,CXF需要@XmlRootElement。我只有Jersey作为JSON映射器的经验。