我们的应用程序提供了一个 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/是否明智,或者我们应该使用其他东西?
谢谢
夹板