webservice权限控制设计及说明
已有2.0版本,自动实现接口,取消了eclipse生成实现类的过程,详情见git上2.0文档
代码地址(1.0)
https://coding.net/u/mich/p/easytry/git/tree/master/WebService
代码地址(2.0)
https://coding.net/u/mich/p/easytry/git/tree/master/WebServiceV2.0
模块划分
模块主要划分为三个模块,客户端,服务端,output模块
服务端:提供对外服务
author包下为权限相关处理类,此处需要和自己系统做对应处理
webservice包下为对外接口,实现类以及相应pojo
output模块:通过服务端的wsld利用eclipse插件自动生成接口以及实现类,同时包含授权相关工具代理
Proxy包下主要提供给客户端权限控制的代理
Webservice包下为eclipse自动根据wsdl生成的实现方法以及代理等类
客户端:调用方法
java下主要调用服务端的相关接口做的简单测试代码
cxf.properties为主要的webservice相关配置文件
同时lib引用了上例output所导出的jar包
核心处理流程
开发流程
1. 服务端开发
a) 编写接口
注意接口上方要添加@WebService注解
b) 编写实现类
实现类同样要添加@WebService注解同时endpointInterface为对应接口类全名,targetNameSpace为实现类包名倒置,@Service添加后,便于webservice的发布
c) 编写配置文件cxf-servlet.xml
在WebserviceAuthorizeListener中已给所有webservice添加了AuthorInterceptor拦截器,控制权限,如果上例webservice的实现类未添加@Service注解此处需要额外配置
d) 访问http://localhost:8080/webserviceStudy/services/testService?wsdl
如果显示信息,则表示成功
2. output模块开发
a) 开启服务端服务,保证刚刚发布的wsd可以访问
b) 点击项目右键,新建一个web Service Client
c) 点击next,此时如果wsdl不能访问,则会报错,点击finish即可生成对应代码
d) 生成成功后会生成五个文件,I***Service, I***ServiceProxy,***ImplService,***ImplServiceLactor,***ImplServiceSoapBindingStub,客户端主要调用Proxy
e) 项目导出jar包
3. 客户端开发
a) 将output导出的jar包导入项目中
b) 通过authorProxy调用getService,内部传入相关接口Proxy的get***Service方法
c) 此处可能抛出异常,如缺失头信息:此错误可能由于authorProxy未生效导致,权限不足:可能该用户并没有调用该服务的权限
其余cxf相关配置说明
1. 服务端web.xml
2. 客户端spring-mvc.xml
通过spring注入AuthorizeProxy的Bean不同客户端的name和token在cxf.properties中设置
测试结果
测试主要通过客户端的TestController配置,权限主要配置两个tom:tom,admin:adminPwd,服务端权限主要在AuthorizeService中配置,此处仅为测试使用,实际需以项目做对应处理
以下结果为tom:tom的权限测试
http://localhost:8080/webserviceClientStudy/hello?name=sss
http://localhost:8080/webserviceClientStudy/create?name=tom&id=2
http://localhost:8080/webserviceClientStudy/delete
代码地址(1.0)
https://coding.net/u/mich/p/easytry/git/tree/master/WebService
代码地址(2.0)
https://coding.net/u/mich/p/easytry/git/tree/master/WebServiceV2.0
模块划分
模块主要划分为三个模块,客户端,服务端,output模块
服务端:提供对外服务
author包下为权限相关处理类,此处需要和自己系统做对应处理
webservice包下为对外接口,实现类以及相应pojo
output模块:通过服务端的wsld利用eclipse插件自动生成接口以及实现类,同时包含授权相关工具代理
Proxy包下主要提供给客户端权限控制的代理
Webservice包下为eclipse自动根据wsdl生成的实现方法以及代理等类
客户端:调用方法
java下主要调用服务端的相关接口做的简单测试代码
cxf.properties为主要的webservice相关配置文件
同时lib引用了上例output所导出的jar包
核心处理流程
开发流程
1. 服务端开发
a) 编写接口
注意接口上方要添加@WebService注解
b) 编写实现类
实现类同样要添加@WebService注解同时endpointInterface为对应接口类全名,targetNameSpace为实现类包名倒置,@Service添加后,便于webservice的发布
c) 编写配置文件cxf-servlet.xml
在WebserviceAuthorizeListener中已给所有webservice添加了AuthorInterceptor拦截器,控制权限,如果上例webservice的实现类未添加@Service注解此处需要额外配置
d) 访问http://localhost:8080/webserviceStudy/services/testService?wsdl
如果显示信息,则表示成功
2. output模块开发
a) 开启服务端服务,保证刚刚发布的wsd可以访问
b) 点击项目右键,新建一个web Service Client
c) 点击next,此时如果wsdl不能访问,则会报错,点击finish即可生成对应代码
d) 生成成功后会生成五个文件,I***Service, I***ServiceProxy,***ImplService,***ImplServiceLactor,***ImplServiceSoapBindingStub,客户端主要调用Proxy
e) 项目导出jar包
3. 客户端开发
a) 将output导出的jar包导入项目中
b) 通过authorProxy调用getService,内部传入相关接口Proxy的get***Service方法
c) 此处可能抛出异常,如缺失头信息:此错误可能由于authorProxy未生效导致,权限不足:可能该用户并没有调用该服务的权限
其余cxf相关配置说明
1. 服务端web.xml
2. 客户端spring-mvc.xml
通过spring注入AuthorizeProxy的Bean不同客户端的name和token在cxf.properties中设置
测试结果
测试主要通过客户端的TestController配置,权限主要配置两个tom:tom,admin:adminPwd,服务端权限主要在AuthorizeService中配置,此处仅为测试使用,实际需以项目做对应处理
以下结果为tom:tom的权限测试
http://localhost:8080/webserviceClientStudy/hello?name=sss
http://localhost:8080/webserviceClientStudy/create?name=tom&id=2
http://localhost:8080/webserviceClientStudy/delete
来源:https://www.cnblogs.com/MichLy/p/7686518.html