什么使wsdl文件与portType但没有绑定正确?

时间:2017-01-31 15:47:34

标签: java web-services soap wsdl cxf

在wsdl manual中,在示例2的第二部分中,有一个wsdl文件包含portType,但没有binding

<?xml version="1.0"?>
<definitions

             targetNamespace="http://example.com/stockquote/definitions"
             xmlns:tns="http://example.com/stockquote/definitions"
             xmlns="http://schemas.xmlsoap.org/wsdl/">


    <import namespace="some.xsd"
            location="some.xsd"/>

    <message name="GetLastTradePriceInput">
        <part name="body"/>
    </message>

    <message name="GetLastTradePriceOutput">
        <part name="body"/>
    </message>

    <portType name="StockQuotePortType">
        <operation name="GetLastTradePrice">
            <input message="tns:GetLastTradePriceInput"/>
            <output message="tns:GetLastTradePriceOutput"/>
        </operation>
    </portType>
</definitions>

some.xsd是同一个示例的第1部分,也不包含任何绑定。

当我尝试通过wsdltojava的{​​{1}}传递该文件时,它会给我一个警告

cxf

并出错:

 WARNING: WSDL document file:/C:/IdeaProjects/sss/webservices/src/main/schema/BundleAdmin/Atry.wsdl does not define any services

这些是WSI-BP-1.0 R2718 violation: A wsdl:binding in a DESCRIPTION MUST have the same set of wsdl:operations as the wsdl:portType to which it refers. GetLastTradePrice not found in wsdl:binding. 使用的参数:

wsdltojava

请让翻译程序要求 List<String> prepareArgs = ['-fe', 'jaxws', '-autoNameResolution', '-db', 'jaxb', '-xjc-extension', '-impl', '-server', '-client', '-validate', '-d', ext.genDirName, /* change package name for types already generated with XmlBeans */ '-p', 'http://messaging.ei.tmobile.net/datatypes=net.tmobile.ei.messaging.jaxb' 部分的原因是什么? -validate可以让SW注意到问题,但不是创建问题的arg。

2 个答案:

答案 0 :(得分:0)

...引用外部XSD的正确方法是在wsdl:types元素中使用带有import / include的XSD架构。

详情请参阅

Importing xsd into wsdl

在您的情况下,您正在使用

 *<import namespace="some.xsd"
            location="some.xsd"/>*

根据引用的链接,为什么不在<import namespace=...元素中包含<types>元素,如下所示:

https://stackoverflow.com/a/12125913/1925356

答案 1 :(得分:0)

哦,这完全是我的错误。 wsdl手册的示例2的第二部分实际上只有portType而没有绑定。它导入的xsd文件也没有绑定(当然)。但第二部分不是服务!该服务是第三部分,具有绑定和导入部分2.因此,该服务具有portType和绑定。需要binding部分的它们不是的参数,总是需要它。

我应该注意警告 - 提到的文件还不是服务,应该存在另一个文件,它将是一个服务,并将包含该文件的包含和绑定部分。或者,当然,它可以在一个文件中包含portTypebinding