axis2客户端调用免费的webservice服务的实例之一通过wsdl生成客

1.Webservice的背景面向组件

当面向对象的编程方式盛行后,曾一度解决了当时维护、开发中的许多问题,但是实际业务场景的复杂,以及企业间越来越密切的合作,让面向对象的方式变得很有局限性。比如,面向对象的方式无法实现跨语言,跨平台的互用。从而使得同样的东西要用不同的语言来实现,这直接导致了软件复用性的下降,有时候还不得不放弃某中语言的优势来实现功能。

意识到这个问题,有人发现无论什么语言,最终是要交给计算机运行,以机器语言的形式被计算机识别的,因此,可以考虑平台互动的部分,可以做成字节码的包,由于这种包的无关性(都能识别,不依赖特定语法),让跨语言,跨平台调用成为了可能。因为只要按照统一规范开发这种包,那么就能被支持的语言识别。这种包被称为组件,而这种开发方式则是面向组件的开发。

面向服务(soa)

随着网络的发展,面向组件的方式也渐渐不能满足需求。因为一个应用可能需要远程调用另一个,而且二者完全不能有依赖(很可能两个应用来自于不同的公司,有着无法逾越的鸿沟)。比如,某企业的erp系统首页,需要气象局的气象资料以显示天气,之前面向组件的方式完全无法使用。考虑到这种复杂且多变的应用,需要一种统一的并且能被各种系统识别的数据规范,来相互交流数据。这时软件工程研究人员发现,网络资源完全可以看作一个一个的服务,相互之间如果有定义良好的规范,并统一管理服务,那么这种复杂应用会变得异常简单,这就是soa的诞生背景。

Corba

Soa的概念刚提出来时,其实现是corba技术。他的出现,为网络,为企业间的协作方式带来巨大的改变。后来,人们渐渐感觉Corba接口依赖于底层网络协议,复杂且难于使用,于是慢慢被另一种更加简洁,表述规范且易于使用的实现所替代,这就是webservice。直到现在,webservice已经成为了了主流,而很少看到corba接口的身影了。当然,由于corba接近网络底层,在传输效率上比webservice高。

Webservice

作为目前主流的服务实现方式,webservice需要一种语义良好,定义规范且能被各种系统或环境识别的文件格式来描述服务,以便能轻松应对各种场景。人们选择了xml来描述服务,并规定了一系列xml属性标签来描述具体服务的含义,这种描述文件就是wsdl文件,而这一系列属性标签则被称为wsdl(即webservice discription language,Web服务描述语言)

2.Webservice开发实例

a:下载axis2-1.6.2-bin.zip,解压

b:在解压后的目录中找到wsdl2java.bat,我的目录是E:\axis2-1.6.2-bin\axis2-1.6.2\bin

c:配置axis2环境变量,新建AXIS2_HOME变量名,值为E:\axis2-1.6.2-bin\axis2-1.6.2

之后,,在Path变量中加入%AXIS2_HOME%\bin;

之后在程序–>运行中输入cmd,回车,在页面中输入wsdl2java,回车,如下图

如果出现上述信息说明配置成功

d:利用网上免费的服务来结合wsdl2java命令来生成客户端代码,在dos中按照如下格式输入信息

wsdl2java -uri 服务链接(以.wsdl结尾的链接) -p 包名 -o 生成的文件要放在的地方

以查找手机号的所属地服务为例,如:wsdl2java -uri?wsdl -p com.test.webs -o e:\testwebser

注意:代码中.wsdl的服务地址链接一定要先在浏览器中运行一下,看是否能成功打开,成功后方可用于代码中

输入信息后回车,将看到下图信息

之后,到刚才设置的硬盘目录,找到生成的文件

e:将生成的两个文件copy到eclipse中。在eclipse中新建一个项目(java project/Dynamic project都行),注意新建package时,package名尽量和dos中输入wsdl2java命 令中的包名一致,不然两个文件copy到项目中需要把文件生成的类名的包名全部修改一遍,dos命令中我用的包名是com.test.webs,所以package名也是 com.test.webs,项目结构如下图:

旅行,其实是需要具有一些流浪精神的,

axis2客户端调用免费的webservice服务的实例之一通过wsdl生成客

相关文章:

你感兴趣的文章:

标签云: