使用cxf框架搭建webservice
场景:为APP端开发提供一组接口用于一系列业务操作
简介:笔记主要总结使用CXF框架搭建webservice,发布SOAP及RESTFUL服务。
工具:使用maven管理cxf等依赖,使用tomcat部署发布webservice服务
1.CXF简介
Apache CXF是一个开源的Service框架,用于简化用户的service开发,基于CXF开发的应用可提供SOAP、XML/HTTP、RESTFUL HTTP等服务。CXF底层页可以使用不同的传输协议,包括HTTP、JMS或JBI等。
Apache CXF 是一个开源的 Services 框架,用于简化用户的service开发,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。(百度百科)
2.SOAP与RESTFUL简介
SOAP协议是什么?
SOAP(Simple Object Access Protocol,简单对象访问协议)是基于XML的协议,它是分布式系统之间交换信息的轻量级方法,它广泛支持各种系统和RPC以及Messaging等通信模型,是一种非常好的跨平台和跨厂商的技术。
RESTFUL是什么?
RESTFUL是一种软件架构风格、设计风格。RESTFUL视万物皆为资源(有没有想起java的万物皆对象),所以通常使用名词命名(摒弃之前,eg:保存-save,修改-update等动词的使用)而URI(请求路径,增查改删均为统一名词路径,差异在于请求方法,eg:post、get、put、delete)则为资源的唯一标识。
3.项目结构

4.搭建webservice
-
省略Spring、Spring MVC配置
-
新建webservice.xml
<jaxws:server id="soapService" serviceClass="com.demo.webservice.RsWebServiceImpl" address="/soapService">
jaxws:features
</jaxws:features>
</jaxws:server>
<jaxrs:server id="rsServices" address="/rsServices">
jaxrs:extensionMappings
</jaxrs:extensionMappings>jaxrs:serviceBeans
</jaxrs:serviceBeans>
jaxrs:features
</jaxrs:features>
jaxrs:providers
</jaxrs:providers>
</jaxrs:server>
DemoWSFeature类
/**
* 拦截器捆绑类
* @author eatcrow
* @create 2018-07-09 18:22
**/
public class DemoWSFeature extends AbstractFeature {
@Override
protected void initializeProvider(InterceptorProvider provider, Bus bus) {
// 登录拦截器捆绑
provider.getInInterceptors().add(new LoginInInterceptor());
//inInterceptors 拦截接收到的消息
//inFaultInterceptors 拦截接收错误消息
//outInterceptors 拦截发出去的消息
//outFaultInterceptors 拦截发出去的错误消息
}
}
- pom文件配置
版本号定义
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.2.4.RELEASE</spring.version>
<cxf.version>3.1.2</cxf.version>
cxf pom依赖
5.异常统一处理
webservice接口进行统一的异常处理
/**
* 异常统一处理类
* @author eatcrow
* @create 2018-07-09 19:36
**/
public class DemoExceptionMapper implements ExceptionMapper
@Override
public Response toResponse(Exception e) {
// TODO: 异常的日志记录/封装成自定义的异常等等
String returnStr = "异常 :"+ e.getClass().getTypeName();
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(returnStr).type("application/json;charset=UTF-8").build();
}
}
本文只是将自己搭建的webservice配置进行简单的展示和讲解,作为使用笔记,供后续自己参考。
项目git地址 https://github.com/eatcrow/CXFWebservice.git

浙公网安备 33010602011771号