浅谈WebService之JAXRS与spring整合

  1 背景:首先谈一下webservice:
  2     1.Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,
  3     可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,
  4     用于开发分布式的互操作的应用程序。
  5 其中最有分量的莫过于CXF框架了
  6   2.cxf框架又包含jax-ws和jax-rs这两类
  7  今天我们主要来研究一下jax-rs这种基于HTTP协议的(REST)架构风格创建与spring结合使用的Web服务:
  8 一:服务器端:
  9 1.导入对应的JAR包在你的pom.xml文件中如下:     
 10     <dependencies>
 11           <!-- cxf 进行rs开发 必须导入  -->
 12           <dependency>
 13             <groupId>org.apache.cxf</groupId>
 14             <artifactId>cxf-rt-frontend-jaxrs</artifactId>
 15             <version>3.0.1</version>
 16         </dependency>
 17         <!-- 日志引入  -->
 18         <dependency>
 19             <groupId>org.slf4j</groupId>
 20             <artifactId>slf4j-log4j12</artifactId>
 21             <version>1.7.12</version>
 22         </dependency>
 23         <!-- 客户端 -->
 24         <dependency>
 25             <groupId>org.apache.cxf</groupId>
 26             <artifactId>cxf-rt-rs-client</artifactId>
 27             <version>3.0.1</version>
 28         </dependency>
 29         <!-- 扩展json提供者 -->
 30         <dependency>
 31             <groupId>org.apache.cxf</groupId>
 32             <artifactId>cxf-rt-rs-extension-providers</artifactId>
 33             <version>3.0.1</version>
 34         </dependency>    
 35         <!-- 转换json工具包,被extension providers 依赖 -->
 36         <dependency>
 37             <groupId>org.codehaus.jettison</groupId>
 38             <artifactId>jettison</artifactId>
 39             <version>1.3.7</version>
 40         </dependency>
 41         <!-- spring 核心 -->
 42         <dependency>
 43             <groupId>org.springframework</groupId>
 44             <artifactId>spring-context</artifactId>
 45             <version>4.1.7.RELEASE</version>
 46         </dependency>
 47         <!-- spring web集成 -->
 48         <dependency>
 49             <groupId>org.springframework</groupId>
 50             <artifactId>spring-web</artifactId>
 51             <version>4.1.7.RELEASE</version>
 52         </dependency>
 53         <!-- spring 整合junit  -->
 54         <dependency>
 55             <groupId>org.springframework</groupId>
 56             <artifactId>spring-test</artifactId>
 57             <version>4.1.7.RELEASE</version>
 58         </dependency>
 59         <!-- junit 的测试开发包 -->
 60         <dependency>
 61             <groupId>junit</groupId>
 62             <artifactId>junit</artifactId>
 63             <version>4.12</version>
 64         </dependency>
 65     </dependencies>
 66     <!-- 配置启动maven项目的服务端口为9996 -->
 67     <build>
 68         <plugins>
 69             <plugin>
 70                 <groupId>org.codehaus.mojo</groupId>
 71                 <artifactId>tomcat-maven-plugin</artifactId>
 72                 <version>1.1</version>
 73                 <configuration>
 74                     <port>9996</port>
 75                 </configuration>
 76             </plugin>
 77         </plugins>
 78     </build>
 79 2.配置web.xml中的CXFService-servlet
 80     <!-- spring配置文件位置 -->
 81     <context-param>
 82         <param-name>contextConfigLocation</param-name>
 83         <param-value>classpath:applicationContext.xml</param-value>
 84     </context-param>
 85     <!-- spring核心监听器 -->
 86     <listener>
 87         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 88     </listener>
 89     <!-- CXF基于web的访问路径的配置servlet -->
 90     <servlet>
 91         <servlet-name>CXFService</servlet-name>
 92         <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
 93         <load-on-startup>1</load-on-startup>
 94     </servlet>
 95     <servlet-mapping>
 96         <servlet-name>CXFService</servlet-name>
 97         <url-pattern>/services/★</url-pattern>
 98     </servlet-mapping>
 99 3.编写服务的接口、实现类、Dao以及实体类
100     接口
101     public interface IXxxService{
102     @Path
103     @Produces | @Consumes
104     @GET|@POST|@PUT|@DELETE
105     public 返回类型 method(@PathParam("")参数 || @QueryParam("")参数);
106     ...
107     }
108     实现类
109     public class XxxServiceImpl implements IXxxService{
110     public 返回类型 method(参数){
111     业务操作
112     return 返回值
113     }
114     ...
115     }
116     Dao层
117     public interface XxxDao implements JpaRepostory<T,String>();
118     实体类
119     @XmlRootElement//定义根元素
120 
121 4.配置applicationContext.xml
122 
123     <?xml version="1.0" encoding="UTF-8"?>
124     <beans xmlns="http://www.springframework.org/schema/beans"
125         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
126         xsi:schemaLocation="
127         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
128         http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">
129         <!-- 
130             address 发布服务地址 
131             servicesBeans 服务实现类 
132          -->
133         <jaxrs:server id="userService" address="/userService" >
134             <jaxrs:serviceBeans>
135                 <bean class="cn.itcast.cxf.service.UserServiceImpl" />
136             </jaxrs:serviceBeans>
137             <jaxrs:inInterceptors>
138                 <bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
139             </jaxrs:inInterceptors>
140             <jaxrs:outInterceptors>
141                 <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
142             </jaxrs:outInterceptors>
143         </jaxrs:server>
144     </beans>
145 
146 5.发布服务器生成访问地址是:
147 
148 http://ip:port/项目/services(web.xml CXFServlet url-pattern)/address/path(method)[/参数]
149 
150 二:客户端
151     1.直接使用WebClient调用相关属性进行操作:
152         WebClient.create(url)//创建连接
153         .type(MediaType.APPLICAITON_XML)//设置参数传递类型
154         .accept(MediaType.APPLICATION_JSON) //设置接收返回值的类型
155         .get(模型类.class) //设置查询 并设置模型类类型
156         .getCollection(模型类.class) //设置批量查询 并设置模型类类型
157         .put(带参数对象) //修改操作
158         .post(带参数对象) //新增操作
159         .delete(带参数对象) //删除操作
  三:提供第三方的接口(通过http协议进行不同系统之间的访问)
    常用的是:HTTPClient 160 OK,以上内容仅供参考,如有雷同,纯属巧合^-^.
原文地址:https://www.cnblogs.com/yshang/p/8081958.html