我理解的axis与axis2的差别

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

 

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

axis与axis2的异同

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

 
   
     
     

   

   
     
     

   

 

 

axis2:

   
        myTestService
   

   
                                 class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
                                 class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
   

    TestService

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

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消息体的解析封装等还有很大量的工作可以学习哦!

 

 

你可能感兴趣的:(java)