使用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依赖




org.apache.cxf
cxf-rt-frontend-jaxrs
${cxf.version}




org.apache.cxf
cxf-rt-frontend-jaxws
${cxf.version}



com.fasterxml.jackson.jaxrs
jackson-jaxrs-json-provider
2.5.0

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

posted @ 2018-10-09 09:20  eatcrow  阅读(671)  评论(1)    收藏  举报