加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

用XFire做的带验证(Handler方式)的Webservice!!!(完整版)

发布时间:2020-12-17 01:28:40 所属栏目:安全 来源:网络整理
导读:XFire是一个Webservice的框架。搞XFire两天了,前面也写了几篇文章,这里再写一个生产中的比较规范的demo,意图使人直接看到这篇文章也能实验成功。提供webservice接口给别人调用一般是给一个wsdl文件,这样别人就可以根据这个文件自动生成工具类进行调用。

XFire是一个Webservice的框架。搞XFire两天了,前面也写了几篇文章,这里再写一个生产中的比较规范的demo,意图使人直接看到这篇文章也能实验成功。提供webservice接口给别人调用一般是给一个wsdl文件,这样别人就可以根据这个文件自动生成工具类进行调用。本文章带验证功能,生产中的webservice接口也不是知道地址就能调用的,最起码的一个账户、密码验证还是要的。废话不多说了!

?

简单分析下将要实现的功能,以便后面容易理解。调接口会拿到一个list,里面装的是自定义的类,前提是要先通过用户名和密码的验证才能拿到list结果,否则会提示身份验证失败!!!后面看到将会有两个项目,服务端:webservice 客户端:webserviceclient 。服务端和客户端都要加入xfire的jar包(xfire下的xfire-all-1.2.6.jar和xfire/lib下的*.jar,最好是复制到项目的lib下面,否则可能会出现一些不可预料的错误。),其中服务端要在web.xml中配置一下:

就这样开发环境算是搭好了,其中客户端大部分是利用ant根据wsdl自动生成的,这也是为什么webservice接口一般要求提供一个wsdl的原因了吧。还要说下项目的结构:

webservice:

WebserviceConstant类 抽取的项目中一般喜欢写死的常量,这样更灵活。(一改全改,统一维护)

Webservicehandler类 返回list集合的webservice接口实现类

WebserviceInfo类 JavaBean,list集合中装的就是这个自定义对象。

?WebserviceInterface类 webservice接口

WebserviceIpParameter类 读取配置文件的类,不是用户名和密码要通过验证嘛,服务端就是把的配置起来的,采用单例。

WebserviceServerHandler 服务端验证类,在里面验证用户名和密码

config.properties 放在src下面的。配置的是用户名和密码

src/META-INF/xfire/services.xml webservice的配置类。

WebserviceInterface.aegis.xml aegis绑定配置文件?

?

webserviceclient:

WebServiceTest.java 自己写的测试类

?WebserviceClientHandler.java 客户端调用接口需要传递验证信息,这个类就是构造验证信息的。

webserviceclient/build.xml 在项目下面的,根据wsdl自动生成一些代码到客户端

?

开发环境:xfire-distribution-1.2.6.zip、jdk1.6、eclipse3.2、tomcat6.0

需要说的基本都交代清楚了吧,没有说清楚的后面想到再说,我不是写书的,也就是想到哪说哪。草草的总结一个而已。下面上代码:

?

服务端代码,都是在webservice项目下面的 WebserviceInterface

?

WebserviceInterface.aegis.xml

?

Webservicehandler

?

?WebserviceInfo

?

WebserviceIpParameter

?

config.properties

?

WebserviceConstant

?

WebserviceServerHandler

?

services.xml

?

接下来是客户端代码,webserviceclient下的

WebserviceClientHandler

?

WebServiceTest

?

build.xml

?

WebServiceTest中的代码有很多类是没有介绍到的,一部分是jar里面带的,一部分是ant生成的。

build.xml 中的http://127.0.0.1:8080/webservice/WebService?wsdl是常量。

${basedir}/WebContent/WEB-INF/lib 是xfire的jar路径

客户端的WebserviceClientHandler类代码中用到了服务端的那个常量类,注意要在客户端引入。

还要说下原理,客户端和服务端分别都有个handler类(handler就类似与拦截器那种东东),服务端是验证身份,客户端是构造验证身份传给服务端。服务端验证通过了才调接口,否则抛出异常。

下面贴出的是虚拟的、其中服务端查找、客户端构造的虚拟的xml。在实际项目中是不存在的,再说一次虚拟的。贴出来是方面发家理解代码

?

最后在贴出两个项目的截图:

webserviceclient/src/com.zte和mca和test都是生成的

webserviceclient中只手写了2个类一个xml(WebServiceTest.java WebserviceClientHandler.javabuild.xml)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读