• 浅谈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,以上内容仅供参考,如有雷同,纯属巧合^-^.
  • 相关阅读:
    C++PRIMER 阅读笔记 第三章
    一个for循环打印二维数组
    递归实现数组求和
    strlen 与 sizeof
    call,apply,bind,this
    js 原型继承
    vue 动画
    vuex学习心得
    vue+elementui dropdown 下拉菜单绑定方法
    vue 生命周期一点学习
  • 原文地址:https://www.cnblogs.com/yshang/p/8081958.html
Copyright © 2020-2023  润新知