【发布时间】:2016-01-16 14:35:44
【问题描述】:
同事,情况: 我有一个 WSDL,用于使用 CXF 中的 wsdl2java 生成类并部署 Web 服务。在今天之前,Web 服务操作运行良好。在请求中,每个属性都有一个前缀(据我了解,这意味着“合格”)。 今天我决定为“硬编码”客户端添加一个新操作。该客户端的一个特点是它要求在请求中没有前缀(新)的元素的属性。 例如。客户端处理请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sin="http://my.comp/2010/webservice/Service" xmlns:new="http://www.webservice.namespace">
<soapenv:Header/>
<soapenv:Body>
<sin:AuthData>
<new:login>121212</new:login>
<new:password>12121</new:password>
</sin:AuthData>
</soapenv:Body>
</soapenv:Envelope>
但不适用:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sin="http://my.comp/2010/webservice/Service" xmlns:new="http://www.webservice.namespace">
<soapenv:Header/>
<soapenv:Body>
<sin:AuthData>
<login>121212</login>
<password>12121</password>
</sin:AuthData>
</soapenv:Body>
</soapenv:Envelope>
,其中login 和password 元素中没有标签new。
问题:
是否可以创建 Web 服务,其中某些操作具有所有具有前缀的元素和其中元素没有前缀的操作?
如何实现这一点:正确的 WSDL、正确的 CXF 生成的类或其他什么?
我尝试更正类 package-info.java (elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED -> elementFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED) 但在这种情况下,所有元素的所有前缀都被删除。我很乐意接受任何建议。
感谢您的帮助。
【问题讨论】:
标签: java web-services wsdl cxf jax-ws