1. 背景:首先谈一下webservice
  2. 1.Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,
  3. 可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,
  4. 用于开发分布式的互操作的应用程序。
  5. 其中最有分量的莫过于CXF框架了
  6.   2.cxf框架又包含jax-wsjax-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,以上内容仅供参考,如有雷同,纯属巧合^-^.

浅谈WebService之JAX-RS与spring整合的更多相关文章

  1. 浅谈WebService SOAP、Restful、HTTP(post/get)请求

    http://www.itnose.net/detail/6189456.html 浅谈WebService SOAP.Restful.HTTP(post/get)请求 2015-01-09 19:2 ...

  2. 浅谈WebService开发三(动态调用WebService)转

    在前两讲里,我已经向大家演示了如何使用WebService.同步, 异步调用WebService,而在实际开发过程中,可能会有多个WebService接口供你选择,而在程序执行过程中才决定使用哪一个 ...

  3. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  4. 浅谈WebService返回数据效率对比

    原文链接 http://www.dotnetgeek.cn/xuexiwebservice1.html 一.什么是WebService: 简单通俗来说,就是企业之间.网站之间通过Internet来访问 ...

  5. 浅谈WebService的调用<转>

    0.前言 前段时间,公司和电信有个合作,产品对接电信的某个平台,使用了WebService接口的调用,实现了业务受理以及单点登录.终于使用到了WebService,楼主还是比较兴奋的,目前功能已经上线 ...

  6. 浅谈WebService开发(一)

    一.什么是WebService: 简单通俗来说,就是企业之间.网站之间通过Internet来访问并使用在线服务,一些数据,由于安全性问题,不能提供数据库给其他单位使用,这时候可以使   用WebSer ...

  7. 浅谈WebService的调用

    0.前言 前段时间,公司和电信有个合作,产品对接电信的某个平台,使用了WebService接口的调用,实现了业务受理以及单点登录.终于使用到了WebService,楼主还是比较兴奋的,目前功能已经上线 ...

  8. 浅谈IDEA集成SSM框架(SpringMVC+Spring+MyBatis)

    前言 学习完MyBatis,Spring,SpringMVC之后,我们需要做的就是将这三者联系起来,Spring实现业务对象管理,Spring MVC负责请求的转发和视图管理, MyBatis作为数据 ...

  9. 浅谈WebService开发二(同步与异步调用)转

    上文 <http://www.dotnetgeek.cn/xuexiwebservice1.html>已经跟大家说了,如果创建一个webservice和简单的调用,本文将注重webserv ...

随机推荐

  1. Logstash IIS日志采集

    Logstash IIS 日志采集,跟Linux上运行差不多,都需要java运行环境,装个jdk就好了,对于IIS日志暂时未处理X-forward-for,纠结怎么弄当中,貌似要装个插件,慢慢研究. ...

  2. Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决

    备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...

  3. 2016级算法第一次练习赛-C.斐波那契进阶

    870 斐波那契进阶 题目链接:https://buaacoding.cn/problem/870/index 思路 通过读题就可以发现这不是一般的求斐波那契数列,所以用数组存下所有的答案是不现实的. ...

  4. 如何在NSDocumentDirectory内新建一个文件夹

    iOS下载文件一般保存到NSDocumentDirectory内,但是为了更好整理文件内容,那就要自定义的生成一些文件夹,和做一些删除文件夹的操作. - (NSString *)pathToPatie ...

  5. 如何高度自定义CollectionView的header和foot

    最近在研究CollectionView,突然发现觉得他的HeaderSection和FootSection也可以高度自定义. 国外有详细的教程:http://www.appcoda.com/ios-c ...

  6. Maven web项目(简单的表单提交) 搭建(eclipse)

    我们将会搭建一个,基于Maven管理的,具有简单的表单提交功能的web项目,使用DAO--service--WEB三层结构,服务器使用Tomcat 1 项目基本结构的搭建 左上角File---> ...

  7. logo back 日志 发送邮件

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <!--<pr ...

  8. 更改Android编译软件版本(make/gcc/bision)

    一.make版本 1.下载make的压缩包 ftp://ftp.gnu.org/gnu/make/ 2.解压,安装 cd make-x.x ./configuration sh build.sh su ...

  9. [转] 在Jenkins Pipeline DSL中 遍历 groovy list

    [From] https://stackoverflow.com/questions/36360097/iterating-a-groovy-list-in-jenkins-pipeline-dsl ...

  10. 【Python】批量检测百度权重

    挖洞过程中收集了站点后,我一般习惯查看站点的百度权重值,为了方便,写了一个简单的脚本, 至于结果如何显示,看个人需求吧,我这里只是简单的列一下,脚本如下: #coding:utf-8 import r ...