zoukankan      html  css  js  c++  java
  • Java调用ASP.NET的webservice故障排除

    Java调用ASP.NET的webservice故障排除

     

    公司要接入其它公司的一个业务功能,对方是提供的 .net产生的webservice,在用cxf的wsdl2java命令生成客户端的测试代码时,出现了如下故障
    WSDLToJava Error: Thrown by JAXB: undefined element declaration 's:schema'

    于是在网上查询大量资料和不断实践摸索后,最后发现了如下两种解决方法,希望我的解决过程和总结,能对其它网友解决类似问题,提供借签和参考作用。
    第一种方式(仍用cxf 解决)
    step1
    将 http://test.payserv.net/Paygate/ccservice.asmx?WSDL 对应的内容另存为 ccservice.wsdl
     

    这里要特别说明的是,只能通过网页中另存为ccservice.wsdl,不能简单的将网页中的复制后,再粘贴到一个文本文件中,另存为 ccservice.wsdl,这样即使经过下述的 step2后,仍然会报错

     

    step2
    首先将 ccservice.wsdl文件中的如下内容进行如下替换
    即将 <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>
    这样处理后,再次运行wsdl2java又报了如下错误
    经过仔细查看和分析,原来在ccservice.wsdl文件中,有queryResponse 和 QueryResponse 两个名字的定义,可能在.net中webservice是不区分大小写的,但是在java中生成webservice的客户端时,又是区分大小写的,所以会报上述错误。针对此,于是将其中的QueryResponse的名字改为了 QueryResponse1,且ccservice.wsdl文件中将所有引用QueryResponse的地方也改成了QueryResponse1。。然后再将运行就一切ok啦

    总结一下

    在用cxf的wsdl2java命令处理net或其它语言产生的webservice时,如出现报错,要仔细观察报错信息的描述,通过自己思考和查询网络资源,有针对性的修改,一定是可以解决的。

    第二种方式(用axis的webservice框架 解决)

    从我测试来看,不需要任何修改即可生成websercie的客户端

    不过,要需要axis如下一些jar包才能保证axis产生的webservice的客户端代码正常运行

    总结一下

    如果用时候发现用cxf的 wsdl2java命令不能正常执行时,不妨考用axix之类的其它webservice框架来解决问题,换一个角度去解决问题。

    调用方式
    Ccservice ccservice = new Ccservice();
    CcserviceSoap ccserviceSoap = ccservice.getCcserviceSoap();
    ccserviceSoap.query(参数1,参数2,...);

    原文:http://www.cnblogs.com/wqsbk/p/5297589.html

  • 相关阅读:
    纯CSS气泡框实现方法探究
    CSS教程:div垂直居中的N种方法[转]
    内容超过长度后以省略号显示
    mCustomScrollbar
    js获取页面元素距离浏览器工作区顶端的距离
    nicescroll参数
    input-placeholder获取焦点清空
    bootstrap去除默认的点击留白处摸态框消失
    【转载 | 笔记】IIS无法删除应该程序池 因为它包含X个应用程序
    【转载】npm查看全局安装过的包
  • 原文地址:https://www.cnblogs.com/kuoAT/p/6931437.html
Copyright © 2011-2022 走看看