spring整合cxf开发JSON格式的RESTful风格web service

5月 27, 2015 |

demo 下载: testcxf-rest.zip

一、前言

网上有很多这个话题的Demo,都不是maven版本,需要自己整理相应的jar包,我在此提供一个maven版本,下载后执行"mvn clean package"就可以直接打包,然后将war包部署到tomcat 容器就可以正常访问了,减少框架搭建的时间。
cxf的RESTful web service实现遵循"jax-rs"规范,默认采用xml格式传输,要使用JOSN格式传输,cxf使用jettison jar包来完成java pojo对象到JSON字符串的转换,所以我们需要添加如下的pom 依赖。

二、开发步骤:

1)使用maven向导产生一个web 工程。
2)添加相应的依赖 参考pom.xml
3)创建pojo对象,使用@XmlRootElement注解,这样可以使用JAXB完成xml转换,参考book.java和Category.java
4)创建CategoryService, 对使用到的"jax-rs"注解说明如下:
@Path("/categoryservice") 映射http 请求路径,和spring mvc的@RequestMapping注解功能相似
@Produces({"application/xml", "application/json"}) 表示产生的响应的格式,对应http 请求头的Accept. 和响应头Content-Type
@GET,@DELETE,@POST,@PUT 对应http的Method,和spring mvc的@RequestMapping(method=RequestMethod.DELETE)用法相似,表示匹配哪种http请求。
@Path("/category/{id}") 表示@PATH支持path 变量,spring mvc也有类似的注解。
@Consumes({"application/xml", "application/json"}) 表示接受的请求头的格式,对应http 请求头的Content-type
5)创建spring context xml,参考applicationContext.xml
和cxf相应的配置如下:

6)配置web.xml, 主要是CXFServlet 声明和spring applicationContext的声明
7)编译"mvn clean package", 将war发布到web 容器,比如tomcat,如果你不想部署到web container,可以运行CategoryServerStart启动一个监听程序。
8)开发客户端,参考CategoryServiceClient.java ,如果你不想开发客户端,可以使用firefox的浏览器poster插件来发http模拟请求。安装好后"tool->poster"来启动它。

注意点:
1)先开发支持xml格式版本,便于调试
2)由于cxf的spring配置在新的版本中有很大的调整,比如很多例子中的"<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />"在新的版本并不需要。

参考文档:

http://cxf.apache.org/docs/json-support.html

<apache_cxf_web_service_development.pdf>
cxf 官方DEMO 《samples\jax_rs\content_negotiation》

Posted in: cxf | Tags: , , , ,

Comments are closed.