cxf maven 依赖 No message body writer foud.. contenttype:application/json
最近使用cxf发布rest服务时遇到了如题的异常,最后发现是缺少依赖的问题.ps:我并没有使用spring
cxf基本运行需要如下依赖
1 <dependency>
2 <groupId>org.apache.cxf</groupId>
3 <artifactId>cxf-core</artifactId>
4 <version>${cxf.version}</version>
5 </dependency>
6 <dependency>
7 <groupId>org.apache.cxf</groupId>
8 <artifactId>cxf-rt-frontend-jaxws</artifactId>
9 <version>${cxf.version}</version>
10 </dependency>
11 <dependency>
12 <groupId>org.apache.cxf</groupId>
13 <artifactId>cxf-rt-transports-http</artifactId>
14 <version>${cxf.version}</version>
15 </dependency>
16 <dependency>
17 <groupId>org.apache.cxf</groupId>
18 <artifactId>cxf-rt-transports-http-jetty</artifactId>
19 <version>${cxf.version}</version>
20 </dependency>
如果想要发布rest风格的服务,需要添加如下依赖(看各人需要,有的可能需要添加rs-api的依赖)
1 <!-- rest风格支持 -->
2 <dependency>
3 <groupId>org.apache.cxf</groupId>
4 <artifactId>cxf-rt-frontend-jaxrs</artifactId>
5 <version>${cxf.version}</version>
6 </dependency>
7 <dependency>
8 <groupId>org.apache.cxf</groupId>
9 <artifactId>cxf-rt-rs-extension-providers</artifactId>
10 <version>${cxf.version}</version>
11 </dependency>
这样就可以发布rest风格的服务了,不过这样有个问题,只能使用xml格式的数据,如果使用下面的注解,即添加json格式的返回数据访问时会报如题的no message body writer的异常
@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
所以需要添加如下依赖
1 <!-- json支持 -->
2 <dependency>
3 <groupId>org.codehaus.jettison</groupId>
4 <artifactId>jettison</artifactId>
5 <version>${jettison.version}</version>
6 </dependency>
总结:出现no message body writer时先检查pojo上是否添加了jaxb的必要标记----@XmlRootElement,其次检查是否缺少依赖关系