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,以上内容仅供参考,如有雷同,纯属巧合^-^.