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

我理解的axis与axis2的差别

发布时间:2020-12-17 02:51:51 所属栏目:安全 来源:网络整理
导读:很多人看了我这个帖子,就找我询问webservice的问题。实在抱歉的很,我自从2007年兴趣接触了一点axis之后,再也没有细致的做过一次webservice的具体编程,所以让很多朋友失望了,在此道歉。如果有java方面的其他问题可以交流,webservice我连皮毛都没抓

很多人看了我这个帖子,就找我询问webservice的问题。实在抱歉的很,我自从2007年兴趣接触了一点axis之后,再也没有细致的做过一次webservice的具体编程,所以让很多朋友失望了,在此道歉。如果有java方面的其他问题可以交流,webservice我连皮毛都没抓住。

?

----------------------------------------------------

axis与axis2的异同

1 服务端java代码的开发没有任何差别
2 服务端的差别是axis的服务标志文件是web-services.xml,而axis2的标志文件是services.xml,另外xml格式也不同。具体样本如下:
axis:
<?xml version="1.0" encoding="UTF-8"?>
<web-services>

? <web-service protocol="http" useSOAP12="false" targetNamespace="http://www.jtv.com.cn" name="MyWebService" style="rpc" uri="/MyWebService">
??? <components>
????? <java-class name="MyWebService" class-name="mywsdemo.MyWebService">
????? </java-class>
??? </components>

??? <operations>
????? <operation method="*" component="MyWebService">
????? </operation>
??? </operations>

? </web-service>
</web-services>

?

axis2:
<service name="TestService" scope="application">
??? <description>
??????? myTestService
??? </description>
??? <messageReceivers>
??????? <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
???????????????????????? class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
??????? <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
???????????????????????? class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
??? </messageReceivers>
??? <parameter name="ServiceClass" locked="false">TestService</parameter>

</service>

可以看到差别还是挺大的。

3 发布文件的区别。axis是可以基于app模式发布的,但是app里面包装了war包的方式来发布(这个不太确定是否必须如此),web-services.xml需要放置在WEB-INF目录下。而axis2中是可以不基于web的,services.xml需要放置在aar(axis archive)的manifest目录下。

4 服务发布到web服务器后,获取wsdl的方式一样。都是在url+ws别名+"?wsdl"即可得到。不过我测试axis是在weblogic上进行,WSDL需要大写,而测试axis2时是在tomcat上,wsdl需要小写。不知是否有此规定?


5 调用WSDL2Java生成的客户端java代码文件不同。
在axis中,生成的文件有Locator类及其接口(定义获取PortType的方法)、PortStub类及其接口(该接口模拟了web服务的方法)类4个java文件(指在最基本的ws服务中),测试类的调用方式是通过Locator得到PortStub的实例。
在axis2中,生成的文件只有2个()但是使用了内部类。分别是CallbackHandler抽象类和Stub类(很多内部类)。测试类直接调用stub的实例即可。

以上只是表面上的些许差别,并且也不是很细致,因为我自己也没弄明白这些东西。实际应用中如果大规模的采用webservice的方式而采用wsdl2java生成客户端代码大概不可取吧,因为如果wsdl发生改变都要重新生成肯定不太好。如果手工实现,那么xml消息体的解析封装等还有很大量的工作可以学习哦!

(编辑:李大同)

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

    推荐文章
      热点阅读