前言
在此篇RESTful风格Web Service应用构建实例中,我将采用Apache CXF作为JAX-RS的实现。
项目描述
- 在这个示例中,我们将创建一个Java实现的简单的Calculator类,其操作是“add”和“subtract”。
- 将这些作为RESTful Web Service公开,接受HTTP GET请求,并将响应以XML或纯文本形式发送。
- 可以在http://localhost:9999/calcrest/calc/add/和http://localhost:9999/calcrest/calc/sub/访问该Web Service
- 在URI本身中发送参数。 例如,要做20和30的加法,URI是http://localhost:9999/calcrest/calc/add/20/30
- 并创建一个Web Service客户端,它向上述的URI发送HTTP GET请求,并显示响应(即调用的Web Service的计算结果)
环境配置
- Java SE 6 及以上
- Eclipse IDE
- CXF相关jar包 Apache官方下载地址
注意:有件较奇葩的事,在我们即将开始的实例中,会用到高频出现的org.apache.cxf.jaxrs.client.WebClient
,而最新版(截止2017.7.19为apahe-cxf-3.1.12)的CXFjar包集内这个的所需jar包cxf-rt-rs-client-x.x.x.jar
竟然没有的,请到常见的Maven仓库中获取相同版本的该jar包 : )
创建并发布Web Service
- 创建一个Java Project(并不需要是Dynamic Web Project,因为CXF内含Jetty的使用),并命名,比如
CalcJAXRSCXF
引入相关jar(图中为构建我们的项目所需的最精简的jar列表)并构建项目结构如下图所示:
完成
CalcREST
类如下:
package com.jaxrscxf.calc;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/calc")
public class CalcREST {
@GET
@Path("/add/{a}/{b}")
@Produces(MediaType