.net调用java生成的ws R2718的问题

原创 2013年12月04日 16:19:38

java工程,使用easywsdl生成发布的WebService的wsdl。并使用SDO的服务数据对象模型,对数据进行描述。

生成的wsdl使用vs2010的visual studio命令提示行,使用wsdl out命令生成C#相关的调用文件,发现后台会抛出如下信息:

警告: 此 Web 引用不符合 WS-I Basic Profile v1.1。
R2718: 说明中的 wsdl:binding 必须与所引用的 wsdl:portType 包含一组相同的 wsdl:operations。
  -  来自命名空间“http://www.com/esb/ComponentService1”的 portType“Com
ponentService1Interface”上的操作“operation1”没有匹配的绑定。
  -  在来自命名空间“http://www.com/esb/ComponentService1”的 portType“C
omponentService1Interface”上,没有与来自命名空间“http://www.com/esb/Com
ponentService1”的绑定“ComponentService1Soap11”上的操作“operation1”相匹配的
操作。
  -  在来自命名空间“http://www.com/esb/ComponentService1”的 portType“C
omponentService1Interface”上,没有与来自命名空间“http://www.com/esb/Com
ponentService1”的绑定“ComponentService1Soap11”上的操作“operation1”相匹配的
操作。

有关 WS-I Basic Profile v1.1 的更多详细信息,请参阅位于以下位置的规范:
http://www.ws-i.org/Profiles/BasicProfile-1.1.html。

错误: 无法从命名空间“http://www.com/esb/ComponentService1”导入绑定“Com
ponentService1Soap11”。
  - 来自命名空间“http://www.com/esb/ComponentService1”的 portType“Comp
onentService1Interface”上的操作“operation1”存在以下语法错误: 此操作没有匹配的
绑定。请检查 Binding 节中的操作、输入和输出的名称是否与 PortType 节中的相应名称
相匹配。

看起来是生成的WSDL不符合ws的某些规范(.Net对这些东西的验证真严格),但是,在java下从没碰到过此类问题。

研究相关规范及网络资源学习,发现问题根本原因在于wsdl文件中的以下“portType”片段的描述:

  <ns1:portType name="ComponentService1Interface">
    <ns1:operation name="operation1">
      <ns1:input message="ns8:operation1" name="operation1">
    </ns1:input>
      <ns1:output message="ns8:operation1Response" name="operation1Response">
    </ns1:output>
    </ns1:operation>
  </ns1:portType>
与后续的“binding”部分的描述:

  <ns1:binding name="ComponentService1Soap11" type="ns8:ComponentService1Interface">
    <ns3:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <ns1:operation name="operation1">
      <ns3:operation soapAction="http://www.com/esb/ComponentService1/operation1" style="document"/>
      <ns1:input>
        <ns3:body use="literal"/>
      </ns1:input>
      <ns1:output>
        <ns3:body use="literal"/>
      </ns1:output>
    </ns1:operation>
  </ns1:binding>
两者的“input”与“output”的相关内容,name属性不一致(所谓不一致,即前者有name属性值,后者没有)。
试过之后,发现有两种解决方案:

1、去掉前者的input与output的name属性值。

2、在后者的input与output中添加与前者相同的name属性值。

即调整后的片段为:

  <ns1:portType name="ComponentService1Interface">
    <ns1:operation name="operation1">
      <ns1:input message="ns8:operation1">
    </ns1:input>
      <ns1:output message="ns8:operation1Response">
    </ns1:output>
    </ns1:operation>
  </ns1:portType>
  <ns1:binding name="ComponentService1Soap11" type="ns8:ComponentService1Interface">
    <ns3:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <ns1:operation name="operation1">
      <ns3:operation soapAction="http://www.apusic.com/esb/ComponentService1/operation1" style="document"/>
      <ns1:input>
        <ns3:body use="literal"/>
      </ns1:input>
      <ns1:output>
        <ns3:body use="literal"/>
      </ns1:output>
    </ns1:operation>
  </ns1:binding>

  <ns1:portType name="ComponentService1Interface">
    <ns1:operation name="operation1">
      <ns1:input message="ns8:operation1" name="operation1">
    </ns1:input>
      <ns1:output message="ns8:operation1Response" name="operation1Response">
    </ns1:output>
    </ns1:operation>
  </ns1:portType>
  <ns1:binding name="ComponentService1Soap11" type="ns8:ComponentService1Interface">
    <ns3:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <ns1:operation name="operation1">
      <ns3:operation soapAction="http://www.apusic.com/esb/ComponentService1/operation1" style="document"/>
      <ns1:input name="operation1">
        <ns3:body use="literal"/>
      </ns1:input>
      <ns1:output name="operation1Response">
        <ns3:body use="literal"/>
      </ns1:output>
    </ns1:operation>
  </ns1:binding>
总之,就是需要两者的input与output的属性保持完全的一致。

Web 服务不符合 WS-I Basic Profile v1.1解决办法

解决方法     通过在方法中添加一个MessageName属性,并将类的WebServiceBinding 属性中ConformsTo 指定为WsiProfiles.None。     具体写法: ...
  • xwnxwn
  • xwnxwn
  • 2010年09月19日 14:09
  • 3457

关于Webservice Web引用报错:缺少 soap:operation 绑定的解决

问题:     手上有个项目,需要使用另一个开发小组开发的WEBSERVICE接口,该接口使用JAVA开发。开发小组提供WEBSERVICE URL后,我通过VS 2010导入WEB引用时发生以下错...
  • conanhhy
  • conanhhy
  • 2013年08月26日 16:49
  • 1360

C#自动添加using引用命名空间

有时候调用了某个函数却不知具体的命名空间,还得去帮助文档去查找,实在是笨办法,其实VS有一个快捷键来解决这个问题,Shilt+Alt+F10...
  • x356982611
  • x356982611
  • 2014年04月04日 11:43
  • 20799

BasicHttpBinding 和 WsHttpBinding 的不同点

原文地址:Difference between BasicHttpBinding and WsHttpBinding   1、简介   WCF引入了很多的绑定和协议。本文重点讨论...
  • aojiancc2
  • aojiancc2
  • 2013年12月31日 15:59
  • 1607

C#提高webService接口调用的性能

  • 2014年05月14日 13:11
  • 4KB
  • 下载

.net调用java生成的ws R2718的问题

java工程,使用easywsdl生成发布的WebService的wsdl。并使用SDO的服务数据对象模型,对数据进行描述。生成的wsdl使用vs2010的visual studio命令提示行,使用w...
  • cyq1984
  • cyq1984
  • 2013年12月04日 16:19
  • 3736

电子书管理V1.1

随着用户电子书的数量越来越多,采用传统的文件目录是管理已经难以满足人们的需要,查找不方便。所以本软件专门针对电子书管理开发,可以方便的管理,查找,统计,输出电子书列表等功能。简单实用,附有使用的详细说...
  • kittyjie
  • kittyjie
  • 2008年07月02日 18:19
  • 887

Java WS和C#调用

互操作性是Web Service的真正优势,虽然关于WS标准有很多,但不同厂家都是自己的实现,不同实现之间的互操作性因此很差,于是有了WS-I组织成立来管理这种差异,并提供统一的互操作性规范,到目前为...
  • keepeye
  • keepeye
  • 2005年07月25日 14:37
  • 2197

.Net调用Java端带有WS-Security支持的Web Service各方案实战

到现在为止,我们AEP平台已经发布很长一段时间了,也有很多ISV接入并上线了,就语言而言,目前主要有三类:Java、.Net、Php;Java和Php的调用不存在很复杂的问题,但是.Net就要相对复杂...
  • sfdev
  • sfdev
  • 2008年03月25日 17:53
  • 4428

Web Service 中重载的实现方法

通过在方法中添加一个MessageName属性,并将类的WebServiceBinding 属性中ConformsTo 指定为WsiProfiles.None。     具体写法:[WebServic...
  • xiaoxinghappy
  • xiaoxinghappy
  • 2008年04月11日 06:00
  • 905
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.net调用java生成的ws R2718的问题
举报原因:
原因补充:

(最多只允许输入30个字)