WebService接口开发(Spring+cxf)
服务器端(认证+加密)
导入Apache cxf.jar包
什么是cxf
CXF是建立在SOAP协议上的一个Web service框架。
什么是SOAP协议?
简单来说就是两个不同项目(开发语言不同等)通过xml文件来描述要传输的东西,然后通过HTTP协议传输,接收方把收到的xml解析成需要的对象使用,返回的时候将xml封装又通过http协议传输,如此就是SOAP协议。而CXF就是两个项目之间为了提供服务,而开发的一个开源框架,使用CXF框架可以快速搭建web service。CXF就是将项目中暴露出来的接口(服务)包装起来,成为wsdl,使用方通过wsdl来调用这些服务。
具体实现
spring和cxf进行集成jaxws:server配置
CXF原生支持spring,可以和Spring无缝集成。以下是通过tomcat启动容器来启动cxf服务
什么是jax-ws
JAX-WS规范是一组基于XML的 web services的JAVA API,JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。
在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。
在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
pom配置cxf以及spring相应的依赖
可从apache官方网站下载 apache-cxf-2.1.2.zip, 然后从apache-cxf-2.1.2/lib 目录中获得所需要的jar包。
配置webService.xml(spring-ws-fcms.xml)
插入jaxws库
导入cxf包下的文件
定义拦截器
cxf集成到web容器中web.xml
服务器开发过程
cxf通过拦截器来实现认证,通过md5实现加密 (头部认证)
拦截器分类
- 按所处的位置分:服务器端拦截器(in),客户端拦截器(out)
- 按消息的方向分:入拦截器,出拦截器
- 按定义者分:系统拦截器,自定义拦截器
AbstractPhaseInterceptor(自定义拦截器) 实现用户名与密码的检验
LoggingInInterceptor(系统日志入拦截器类) 使用日志拦截器,实现日志记录
LoggingOutInterceptor(系统日志出拦截器类) 使用日志拦截器,实现日志记录
自定义拦截器进行密码加密以及用户名和密码的认证
定义webservice接口,作为服务的入口(加上@webService注解)
@WebService 注释用于将 Java 类标记为实现 Web Service 或者将服务端点接口 (SEI) 标记为实现 Web Service 接口。
只有被@WebService注解的组件,才会被SimpleJaxWsServiceExporter发现并导出为服务类
定义服务器接口实现类 获取数据(json串)
通过jaxws:service发布服务(webService.xml)
serviceClass:发布的服务器实现的接口
address:发布的地址 (名字)
jaxws:serviceBean:指定服务具体提供者(实现类对象)
jaxws:inInterceptors:入拦截器
jaxws:outInterceptors:出拦截器