cxf maven 依赖 No message body writer foud.. contenttype:application/json

Posted code never lies

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,其次检查是否缺少依赖关系

 

以上是关于cxf maven 依赖 No message body writer foud.. contenttype:application/json的主要内容,如果未能解决你的问题,请参考以下文章

Spring与CXF整合

java maven cxf笔记

maven版cxf集合spring开发服务端

maven版cxf集合jetty开发服务端

MAVEN,SPRING,CXF构建REST风格WebService

maven版axis2调用cxf服务端开发客户端