版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sugar_map/article/details/80784161
本文的核心内容:CXF与Spring集成、restful开发风格webService。
一、Apache CXF和Spring集成
服务提供方
- 编程思路
1. 创建Web工程
2. 导入cxf相关jar包
3. web.xml中配置webservice请求
<!-- 区分普通请求 ws请求 -->
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/cxf/*</url-pattern>
</servlet-mapping>
<!-- 初始化Spring容器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:cxf-servlet.xml</param-value>
</context-param>
4. 编写服务接口+服务接口实现类
5. 在spring配置文件中配置发布服务信息
<!--
发布基于soap协议的ws服务 wsdl
Endpoint.publish("http://localhost:9999/ws",服务对象);
网络地址:http://tomcat服务的ip:端口号/应用名/web.xml配置的cxf请求路径/ws?wsdl
应用:应用代码+服务代码
-->
<!-- 配置指定接口实现类 -->
<jaxws:server address="/ws">
<jaxws:serviceBean>
<bean class="com.cxf.service.impl.JAXServiceImpl"></bean>
</jaxws:serviceBean>
</jaxws:server>
启动TomCat 按照网络地址即可访问wsdl。
服务调用方
- 编程思路
1. 创建spring工程
2. 导入cxf相关jar包
3. 根据WSDL文件生成客户端代码【访问对方的wsdl文件】
4. 在项目中集成客户端代码【将wsdl生成的客户端文件集成到项目中,具体作法在上篇博客中】
5. 在spring配置文件中配置调用信息
<jaxws:client id="jaxService"
address="http://localhost:8088/cxf/ws?wsdl"
serviceClass="com.cxf.service.JAXService">
</jaxws:client>
6.调用服务:
public class MyCXF {
public static void main(String[] args) {
//1.初始化spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:cxf-servlet.xml");
/* 2.获取服务对象 */
JAXService jaxService = (JAXService) applicationContext.getBean("jaxService");
//3.客户端调用测试
List<String> list = jaxService.getInfo("101");
System.out.println(list);
}
}
二:restful开发风格WebService
http://www.ruanyifeng.com/blog/2011/09/restful.html
什么是Restful?
RESTful(Representational State Transfer 资源表现层状态转化)架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。
服务提供方
1.创建spring应用
2.导入cxf+spring相关的所有jar包
3.创建服务接口+服务接口的实现类
package com.resetful.service.impl;
import com.resetful.entity.User;
import com.resetful.service.JAXService;
import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
/**
* Created by Maps on 2018/6/23.
*/
@WebService
public class JAXServiceImpl implements JAXService {
@GET // 请求方式必须get请求
@Path("/{key}")
@Produces("application/json;charset=utf-8") // 响应数据类型json
public User getInfo(@PathParam("key") String key) {
return new User("Jack",25,"BJ");
}
}
4.对需要传输的实体对象配置
5.修改spring配置文件
<!--
配置restful风格的 webservice服务
web.xml 中区分ws请求 + 普通请求
-->
<jaxrs:server address="/restful">
<jaxrs:serviceBeans>
<bean class="com.resetful.service.impl.JAXServiceImpl"></bean>
</jaxrs:serviceBeans>
</jaxrs:server>
6.发布服务
服务的调用方
服务的访问路径:http://tomcat服务的ip:端口号/应用名/web.xml配置的cxf请求路径/bean的address/Path路径/参数【实际是对方wsdl的地址】