首页 文章

如何使用Apache CXF从Mikogo WSDL处理无模式响应类型

提问于
浏览
2

我使用Apache CXF的wsdl2java为Mikogo Web界面创建java存根 .

创建失败,并显示以下消息:

The part does not have a type defined. Every part must specify a type from
some type system. The type can be specified using the built in element or type
attributes or may be specified using an extension attribute.

WSDL外观定义了以下消息:

<wsdl:message name="methodHttpPostOut">
  <wsdl:part name="Body"/>
</wsdl:message>

<http:address location=... />

这看起来像非SOAP和“无模式”响应类型,严格的XSD类型定义没有涵盖 .

  • 我不确定,如果CXF确实提供了这样的"schema-less"定义 .

  • http://schemas.xmlsoap.org/wsdl/http/ 的目的是什么?我可以使用Apache CXF的这种接口吗?

任何人都可以帮忙吗?

2 回答

  • 1

    您得到此错误,因为您的部件没有定义类型 . 您可以使用以下消息输入属性:

    • 元素 . 引用使用QName的XSD元素 .

    • 类型 . 引用使用QName的XSD simpleType或complexType .

    这是complexType的简单示例:

    <definitions .... >
        <types>
            <schema .... >
    
               <element name="Invoice" type="tns:InvoiceType"/>
               <complexType name="InvoiceType">
                   <all>
                       <element name="id" type="string"/>
                   </all>
               </complexType>
            </schema>
        </types>
    
        <message name="PO">
            <part name="invoice" element="tns:Invoice"/>
        </message>
    </definitions>
    

    • 我认为CFX不支持"shema-less"定义 .

    • In this link您可以找到支持的命名空间 . 此命名空间提供URI属性 .

    这里有一些关于http命名空间和wsdl消息的链接:

  • 1

    按照以下步骤,我使用here使用 trang.jar 成功地对XSD进行了逆向工程:

    • 使用SOAP UI作为客户端连接到WSDL

    • 从SOAP UI发出有效请求

    • 将生成的XML响应保存到文件中

    • 正在运行 java -jar trang.jar response-sample.xml guessed.xsd

    • trang产生(在我的情况下)两个XSD文件,我手动修复(类型并不总是正确猜测,等等)

    • 需要将XSD复制到WSDL中

    • 使用wsdl2java重新创建java存根

    这种方法远非架构,但它在没有过多挖掘XML / WSDL编写的情况下帮助了我 .

相关问题