PB调用java编写的webservice


webservice在日常工作中越来越被重用,尤其是大型的信息化建设。闲话少说,笔者就前段时间自己的经历来浅谈一下注意事项。至于如何使用java编写webservice,pb如何创建webservice代理对象,如何调用,可以自己到网上搜索,就不具体阐述了。

利用java开发webservice,开发工具:myeclipse10.7+tomcat7+jdk6

1、使用axis2开发

需要下载myeclipse的axis2插件、Axis标准包和Axis War包,并对tomcat做一些配置,这个大家可以到网上搜一下如何开发,笔者采用打aar包的方式进行开发,虽然不方便调试,但编写起来比较方便,部署也还比较方便。也可以参照:http://blog.csdn.net/tanguang_honesty/article/details/38661073 PB9和PB12均可以正常调用。

2、使用XFire开发

利用myeclipse自带的向导开发,可以参照:http://blog.csdn.net/meteorlwj/article/details/4545100 发布到tomcat上,自己写了个java测试小程序可以正常调用。

a.使用pb9创建代理对象,调用方法时,会报错: pb Unknown SOAP response tag……

解决方法:使用 MSSOAPLib.SoapClient ,即OLE方式调用MSSOAP.SoapClient实现。示例代码:

OLEObject MSSOAPLib1
MSSOAPLib1= CREATE OLEObject
long ll_result
ll_result = MSSOAPLib1.ConnectToNewObject("MSSOAP.SoapClient")
if ll_result <> 0 then
messagebox("系统提示","连接MSSOAP.SoapClient失败!返回参数:"+string(ll_result))
end if
MSSOAPLib1.mssoapinit("http://172.17.99.20:9090/yygh/services/Query?wsdl")
mle_content.Text = MSSOAPLib1.sendXml("Sina", sle_userid.text, sle_passwd.text, sle_mobileno.text, mle_content.text, "new")
b.使用pb12创建代理对象,调用方法时,会报错: unknown wrapper element found…… 好像是类型不对,最后也没找到解决办法。
3、使用CXF开发
使用CXF开发webservice比较方便,到网上搜一下即可,但PB9、PB12创建代理对象调用时,同样报错: unknown wrapper element found…… ,这个问题始终没有找到解决办法,希望以后能有人解决顺便告知一下。

最后笔者查了一下资料,axis2专业开发webservice,而XFire、CXF对spring等结合较好,而且开发出来的webservice在被调用的时候相应时间较短,不少人喜欢使用CXF开发。而axis2相对来说可能复杂一些,但实践证明,用它开发出来的webservice,pb调用起来比较方便,而另外两个总让人感觉不尽人意。另外.net开发的webservice,pb调用起来也比较方便、稳定。至于使用jdk开发webservice,笔者没有进行测试。

PB