java – 从WCF和Biztalk中的WSDL导入键/值complexType定义
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 从WCF和Biztalk中的WSDL导入键/值complexType定义,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5191字,纯文字阅读大概需要8分钟。
内容图文
![java – 从WCF和Biztalk中的WSDL导入键/值complexType定义](/upload/InfoBanner/zyjiaocheng/777/db5f0bd56e434910b7989dceb2e7aeb7.jpg)
几天来我一直在努力解决这个问题.基本上我有以下WSDL服务定义:
<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.2.0-1 (tags/2.2.0u1-7139; 2012-06-02T10:55:19+0000) JAXWS-RI/2.2.6-2 JAXWS/2.2 svn-revision#unknown. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.2.0-1 (tags/2.2.0u1-7139; 2012-06-02T10:55:19+0000) JAXWS-RI/2.2.6-2 JAXWS/2.2 svn-revision#unknown. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://sample.org/schemas/2012" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://sample.org/schemas/2012" name="SampleServiceImplService">
<types>
<xsd:schema>
<xsd:import namespace="http://sample.org/schemas/2012" schemaLocation="http://localhost:8080/sampleServices_war_exploded/sample?xsd=1"/>
</xsd:schema>
</types>
<message name="ExecuteSample">
<part name="parameters" element="tns:ExecuteSample"/>
</message>
<message name="ExecuteSampleResponse">
<part name="parameters" element="tns:ExecuteSampleResponse"/>
</message>
<message name="SampleException">
<part name="fault" element="tns:SampleException"/>
</message>
<portType name="SampleService">
<operation name="ExecuteSample">
<input wsam:Action="http://sample.org/schemas/2012/SampleService/ExecuteSampleRequest" message="tns:ExecuteSample"/>
<output wsam:Action="http://sample.org/schemas/2012/SampleService/ExecuteSampleResponse" message="tns:ExecuteSampleResponse"/>
<fault message="tns:SampleException" name="SampleException" wsam:Action="http://sample.org/schemas/2012/SampleService/ExecuteSample/Fault/SampleException"/>
</operation>
</portType>
<binding name="SampleServiceImplPortBinding" type="tns:SampleService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="ExecuteSample">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="SampleException">
<soap:fault name="SampleException" use="literal"/>
</fault>
</operation>
</binding>
<service name="SampleServiceImplService">
<port name="SampleServiceImplPort" binding="tns:SampleServiceImplPortBinding">
<soap:address location="http://localhost:8080/sampleServices_war_exploded/sample"/>
</port>
</service>
</definitions>
随附以下XSD文件定义:
<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.2.0-1 (tags/2.2.0u1-7139; 2012-06-02T10:55:19+0000) JAXWS-RI/2.2.6-2 JAXWS/2.2 svn-revision#unknown. --><xs:schema xmlns:tns="http://sample.org/schemas/2012" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://sample.org/schemas/2012">
<xs:element name="ExecuteSample" type="tns:ExecuteSample"/>
<xs:element name="ExecuteSampleResponse" type="tns:ExecuteSampleResponse"/>
<xs:element name="SampleException" nillable="true" type="tns:faultInfo"/>
<xs:complexType name="ExecuteSample">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element name="values">
<xs:complexType>
<xs:sequence>
<xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="key" minOccurs="0" type="xs:string"/>
<xs:element name="value" minOccurs="0" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ExecuteSampleResponse">
<xs:sequence/>
</xs:complexType>
<xs:complexType name="faultInfo">
<xs:sequence/>
</xs:complexType>
</xs:schema>
好的,文档看起来很好,我们定义了一个名为ExecuteSample的复杂类型(请求类型),它包含两个成员,名称和值,最后一个是另一个复杂类型,带有一个名为’entry’的条目,带有键和值.
这看起来像一本字典,实际上是一本字典.它甚至使用“建议”的方式来暴露字典,唯一的区别是包含在“entry”参数中.
好吧,猜猜看,WCF svcutil并不是biztalk都能识别出WSDL. SVCUtil和Visual Studio失败时出现了一个非常愚蠢的错误,告诉我:
Warning 1 Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Object reference not set to an instance of an object.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://sample.org/schemas/2012']/wsdl:portType[@name='SampleService'] C:\src\biztalk\ConsoleApplication6\ConsoleApplication6\Service References\ServiceReference1\Reference.svcmap 1 1 ConsoleApplication6
biztalk WSDL导入向导失败,没有任何错误消息,只是告诉我出了什么问题……
我已经尝试了所有的东西,在网络上看到了一切,没有什么真正流行..我很绝望,不知道到底发生了什么,一切看起来很好,但是没有用……
奇怪……任何想法?
解决方法:
您需要将targetNamespace添加到wsdl的types部分中的schema标记.
<types>
<xsd:schema targetNamepace="http://blah.org">
...
</xsd:schema>
</types>
内容总结
以上是互联网集市为您收集整理的java – 从WCF和Biztalk中的WSDL导入键/值complexType定义全部内容,希望文章能够帮你解决java – 从WCF和Biztalk中的WSDL导入键/值complexType定义所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。