首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

应用Axis2开发webservice

2012-11-05 
使用Axis2开发webservice最近公司的项目中有一个应用:网络银行系统向网银中绑定动态口令成功的客户发一条

使用Axis2开发webservice
最近公司的项目中有一个应用:网络银行系统向网银中绑定动态口令成功的客户发一条短信息,而我所在的银行为了集成各个渠道的应用访问,开发了一套EAI系统,将需要的接口都以webservice的形式发布到EAI上,供银行统一规划调度。
进过这段时间开发中的瞎摸乱撞,对使用axis2开发webservice有了一点初步的认识:

首先,本篇博客对于webservice和axis2的文字解释就不再赘述,google百度有很多,也很官方,我只是说一下我自己的理解:
webservice是目前实现异构系统之间相互调用和访问的机制(传输的协议是SOAP,传输内容的格式是xml),.NET框架已经封装了WebService实现,axis和axis2是基于java语言的开源WebService实现(axis1.3是soap1.2协议的一个实现框架)
对于你而言,你不用太关注webservice本身的理论和核心机制,你如果用.net,只需要看看Visual Studio中webservice是如何编程实现的即可,如果用J2EE,只需要看看Axis的部署说明就可以了

好,我们言归正传,我下面的文章建立在对上面两个概念有一个初步认识的前提下,一步步的开发一个基于axis2的webservice实例应用
J2SE SDK 1.3 or 1.4: 我使用 1.4.2 ,Tomcat 5.0

1搭建axis2环境
把axis2.war拷贝到Tomcat 5.0\webapps\目录下
启动Tomcat,访问http://localhost:8080/axis2/
显示Welcome to the new generation of Axis. If you can see this page you have successfully deployed the Axis2 Web Application
在此页面点击Validate,将到达 Axis2 Happiness Page,则说明你的axis2部署成功

2开发工具
环境搭建好了,下面就该是找到一个合适的开发利器了,我使用的是MyEclipse6.0.1,在这里我之所以废话说我开发的IDE,原因有2:首先,我比较懒,懒得连插件都不想去下载安装,MyEclipse中自带的Ant能很大程度上减少我们程序员的重复代码量,而且Ant通过build.xml生成的文件又标准又容易控制,第二,对于服务器而言,我们公司通用的开发IDE是IBM的WSAD6.0也叫RAD(Rational Application Developer),使用他开发起来实在是麻烦,而且集成的WebSphere远远不如Tomcat对初学者来说使着顺手快捷

3配置好build.xml
我这个例子的配置文件如下:


别看他挺长挺吓人的,其实仔细看起来并不复杂,无外乎就是些你axis2的lib包的路径,或是你生成wsdl文件对应的java类的路径之类的

4生成wsdl文件
一个基本的pojo类A,含一些成员和方法(将来会在客户端调这几个方法),在build.xml的Outline视图中右键generate.wsdl,按要求修改wsdl文件,比如修改生成的客户端或服务端的类名等
我这里的pojo例子如下:
     2 楼    dragonccc    2008-12-19              我出现了几个错误 郁闷着呢    3 楼    dragonccc    2008-12-19              错误改正了  但是我看别的文章都有OMELEMENT 这个  楼主为什么没用到呢??能不能回复我 或者联系我呢 QQ 372572941    4 楼    damiao_cn    2008-12-20              dragonccc 写道
错误改正了  但是我看别的文章都有OMELEMENT 这个  楼主为什么没用到呢??能不能回复我 或者联系我呢 QQ 372572941

OMELEMENT对象是webservice比较底层的一个对象,也是一个axis必须用到的对象。自己在类里写完全可以,只是我在工作中发现很少有公司会自己手写这些,而是绝大多数代码都通过build.xml文件生成,把精力都放在业务逻辑的开发上。我这个例子并非没有OMELEMENT对象,只是通过build.xml把代码已经生成好了,呵呵,例子的第8步骤,生成client端的.java文件,其中有一个比较重要的类TestQueryStub,里面就有你说的OMElement,只不过生成的代码很标准,都是org.apache.axiom.om.OMElement 5 楼 jiao_098 2009-02-04   我是一个axis2的初学者,最近也是要写java的WebService.
我想问一下,那个build.xml是生成的吗? 怎么生成的啊? 不会是手写的吧?

我查到有另外一种写法是说,先写好服务端程序,然后通过axis2生成.arr文件,然后发布成wsdl,再通过一个命令,命令如下:
D:\tools\axis2-1.4.1\bin> wsdl2java.bat -uri http://localhost:8080/axis2/services/HelloUser?wsdl -o D:\workspace\WSjava
然后生成两个文件分别是:
*Stub和*CallbackHandler
还有一个build.xml文件

客户端调用的时候也是像LZ写的那样,通过*Stub对象调用.
我试了一下,客户端调用结果正确
但是LZ那生成了那么多类(ExtensionMapper.java
GetBillnoResponse.java
SetBillno.java
SetBillno.java
TestQueryMessageReceiverInOnly.java
TestQueryMessageReceiverInOut.java
TestQuerySkeletonInterface.java
TestQuerySkeleton.java )这些都有用吗?

我那种方法不知道对不对? 还请LZ回复一下,谢谢 6 楼 jiao_098 2009-02-04   不好意思,补充一下.
*Stub和*CallbackHandler都是java文件 7 楼 damiao_cn 2009-02-08   jiao_098 写道
我是一个axis2的初学者,最近也是要写java的WebService. 我想问一下,那个build.xml是生成的吗? 怎么生成的啊? 不会是手写的吧? 我查到有另外一种写法是说,先写好服务端程序,然后通过axis2生成.arr文件,然后发布成wsdl,再通过一个命令,命令如下: D:\tools\axis2-1.4.1\bin> wsdl2java.bat -uri http://localhost:8080/axis2/services/HelloUser?wsdl -o D:\workspace\WSjava 然后生成两个文件分别是: *Stub和*CallbackHandler 还有一个build.xml文件 客户端调用的时候也是像LZ写的那样,通过*Stub对象调用. 我试了一下,客户端调用结果正确 但是LZ那生成了那么多类(ExtensionMapper.java GetBillnoResponse.java SetBillno.java SetBillno.java TestQueryMessageReceiverInOnly.java TestQueryMessageReceiverInOut.java TestQuerySkeletonInterface.java TestQuerySkeleton.java )这些都有用吗? 我那种方法不知道对不对? 还请LZ回复一下,谢谢


我个人理解build.xml文件的作用是方便我们统一通过Ant等工具部署发布应用(即没有这个文件我们照样可以通过其他方式来完成build.xml所做的工作),例子中build.xml文件是从其他webservice例子中抄过来修修补补而成的,呵呵,我可没能力手写这玩意。至于兄弟的另一种写法来实现webservice完全没有问题,好像webservice最初的开发就是这样生成存根的。至于生成那么一堆类有没有用,我觉得生成的那一堆类是对最后我们调用的stub类中的一些类的上层封装,你直接写webservice,不使用那些封装类的话,生成的那一堆别的类就没什么用

热点排行