我使用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 回答
您得到此错误,因为您的部件没有定义类型 . 您可以使用以下消息输入属性:
元素 . 引用使用QName的XSD元素 .
类型 . 引用使用QName的XSD simpleType或complexType .
这是complexType的简单示例:
我认为CFX不支持"shema-less"定义 .
In this link您可以找到支持的命名空间 . 此命名空间提供URI属性 .
这里有一些关于http命名空间和wsdl消息的链接:
WSDL 2.0 HTTP Binding Namespace
WSDL Binding for SOAP 1.2.
Messages
按照以下步骤,我使用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编写的情况下帮助了我 .