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

WebService之WSDL和SOAP实例(基于JAVA)

发布时间:2020-12-17 01:13:19 所属栏目:安全 来源:网络整理
导读:?开发环境:jdk1.6 + Tomcat 6.0.18 + MyEclipse6.0 首先是使用WSDL协议实现: 这里使用XFire XFire一个免费、开源的SOAP框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,其原理是以接口反射机制自动取得远程方
?开发环境:jdk1.6 + Tomcat 6.0.18 + MyEclipse6.0

首先是使用WSDL协议实现:这里使用XFire
XFire一个免费、开源的SOAP框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,其原理是以接口反射机制自动取得远程方法的
WSDL是一个用来描述Web服务和说明如何与Web服务通信的XML语言

准备:开发之前请先到官网(http://xfire.codehaus.org/Download)下载xfire-distribution-1.2.6.zip并解压缩

(1)、新建一个Web项目(服务端),名称为XFireWebService,其目的是为了测试WebService服务端
为工程添加XFire支持的类库,把xfire-1.2.6里lib所有jar和xfire-all-1.2.6.jar拷贝到工程lib里

(2)、把XFire加载到系统中来,增加web.xml的配置信息


(3)、创建Web服务接口,声明该Web服务对外暴露的接口


(4)、创建Web服务实现类,为Web服务接口提供实现


(5)、这两个类是具体的业务实现类,对业务方法的具体实现放在里面


(6)、在src目录下新建一个META-INF文件夹里包含xfire/service.xml该文件是XFire框架的服务发布文件


(7)、注意:当用到List等集合类型时,需要定义Mapping关系
必须与接口同名后缀.aegis.xml,而且要与接口同一位置
???
web.xml和service.xml都可以通过IDE自动生成,也可以手写

(8)、到这步webService服务端就基本完成
部署项目,启动Tomcat,测试一下wsdl,访问http://localhost:8080/XFireWebService/services/HelloService?wsdl
如果能正确显示wsdl文件,说明刚才的部署成功了!!!

(9)、再建一个Web项目(客户端),名称为XFireWebClient,其目的是用来调用一个webService服务
将XFire的库文件拷贝到Web项目的WEB-INFlib目录下,同时需要将服务器端发布的服务打包发布给客户端,发布给客户端的代码只需要打包接口和参数类即可,实现类不必打包到客户端
这里发布的jar包名称为IHelloService.jar,里面包含IHelloService、EnterVO、ExceedVO这三个类

(10)、在这个Web项目里面新建一个Servlet作为测试的Servlet,名称为ClientTestServlet.java
在web.xml里面配置好这个Servlet后,就可以在Servlet里面写webService调用的代码了


客户端的web.xml如下所示:


(11)、注意:XFireWebService项目里的IHelloService.aegis.xml文件,也要放到XFireWebClient项目中来,位置与ClientTestServlet.java同级

(12)、Servlet返回的结果页面:result.jsp


(13)、同样将这个Web项目发布,同时启动XFireWebService和XFireWebClient这两个应用,然后在地址栏里面输入http://localhost:8080/XFireWebClient/
此时会调用客户端的Servlet,然后调用其doGet方法,如果正常的话,可以看到页面输出结果了(*^__^*)


问题:在项目中使用XFire发布服务,在本地测试一切正常,但是传到服务器上,发现List的第一个元素是没有内容的,后面的元素内容显示正常,
通过调试服务端没有问题,是往客户端之间传输时丢失的,目前的解决办法比较2,是在List前面加了一条垃圾数据,故意把List的第一个元素挤下来。
希望有人能帮我解答!!!谢谢


其次是使用SOAP协议实现:有时需要其它语言做服务端,java做客户端,就要用到SOAP获取WebService了
SOAP简单对象访问协议是一种轻量的、简单的、基于 XML 的协议,它被设计成在WEB上交换结构化的和固化的信息

这里演示的例子服务端和客户端都是java

首先从网站http://xml.apache.org/soap/index.html下载soap,解压得到soap.war
把soap.war放到Tomcatwebapps目录下

(1)、新建一个Web项目(服务端)名为SoapService

(2)、编写服务端代码HelloWorldService.java

编写完成后,将HelloWorldService发布jar到Tomcatlib目录中

(3)、SOAP服务的发布
启动Tomcat自动将soap.war解压,访问http://localhost:8080/soap/admin/,会出现soap的管理页面
注意:这里会出现错误是因为在Tomcatlib目录下缺少sun的mail.jar
进入Deploy,填写如下信息:
ID: hello
Scope: Request
Methods getMessage
Provider Type: Java
Java Provider Provider Class: HelloWorld.HelloWorldService
Java Provider Static: NO
确认发布,可以点List查看已发布服务!

(4)、再建一个Web项目(客户端)名为SoapClient
为工程增加4个jar文件:xerces、soap、activation、mail

(5)、在这个Web项目里面新建一个Servlet作为测试的Servlet,名称为HelloWorldClientServlet.java
在web.xml里面配置好这个Servlet后,就可以在Servlet里面写webService调用的代码了

客户端的web.xml如下所示:


(6)、Servlet返回的结果页面:result.jsp


(7)、运行客户端,测试是否通过 同时启动SoapService和SoapClient这两个应用,访问http://localhost:8080/SoapClient/ 应该可以看到返回的内容,则证明配置和测试成功,以后就可以发布自己的SOAP服务了!

(编辑:李大同)

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

    推荐文章
      热点阅读