【发布时间】:2009-12-07 20:38:53
【问题描述】:
我们的应用程序提供了一个 SOAP API。我们的 wsdl 起始行类似于
<wsdl:definitions name='ControlDServices' ... xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' ...
这通常可以正常工作,但客户抱怨说,当他们尝试在 NetBeans 中使用我们的 SOAP API 和我们提供的 wsdl 时,他们收到了以下错误:
Web Service can not be created by JAXWS:wsimport utility.
Reason: invalid extension element: "soap:body" (in namespace "http://schemas.xmlsoap.org/wsdl/soap/")
这可以通过运行轻松地重新创建:
wsimport -d . -extension -Xnocompile -keep -s . -verbose <our wsdl file>
产生错误:
[ERROR] invalid extension element: "soap:body" (in namespace "http://schemas.xmlsoap.org/wsdl/soap/")
unknown location
我们的支持人员发现,将 xmlns:soap 定义更改为使用 http://www.w3.org/2001/12/soap-envelope/ 可以解决问题,但这需要更改我们的产品,并且与我在网上看到的大多数地方相矛盾其中定义了 wsdl:definitions 文件。此外,该URI似乎属于soap-envelop而不属于wsdl,并且也是针对特定日期的,而不是通用URI。
有没有办法在不改变我们的 wsdl 的情况下解决 NetBeans / wsimport 问题,例如通过改变参数?如果否,并且需要更改,将其更改为 http://www.w3.org/2001/12/soap-envelope/ 是否明智,还是应该使用其他内容?
谢谢
分裂者
【问题讨论】:
标签: soap netbeans wsdl xml-namespaces wsimport