Справочная информация: я разрабатываю веб-сервис, который взаимодействует по протоколу WS-Management.Исходный WSDL отсюда http://schemas.xmlsoap.org/ws/2005/06/management/wsman.wsdl выглядит следующим образом:
<xs:complexType name="SampleResourceType">
<xs:sequence>
<xs:element name="PropertyA" type="xs:string"/>
<xs:element name="PropertyB" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:element name="SampleResource" type="tns:SampleResourceType"/>
<wsdl:message name="PutMessage">
<wsdl:part name="Body" element="tns:SampleResource"/>
</wsdl:message>
И этот WSDL хорошо работает с Apache CXF 2.4.0.
Моя цель: заменить определение SampleResource другимпусть операция обрабатывает любой ресурс (XML).Я хотел бы создать файл WSDL для работы, который будет выглядеть так:
<soap:Envelope>
<soap:Body>
<SomeXmlDocument></SomeXmlDocument>
</soap:Body>
</soap:Envelope>
И SomeXmlDocument означает здесь любой XML-документ, определенный во время выполнения.Проблема сейчас в CXF всегда ставит предопределенное имя из WSDL.Я покажу на примерах:
Я использую следующую команду: wsdl2java.bat -fe jaxws21 -d gen -exsh true -verbose file.wsdl
Если я использую wsdl:
<xs:complexType name="CIMObjectType">
<xs:sequence>
<xs:any namespace="##other" minOccurs="0" processContents="lax"/>
</xs:sequence>
</xs:complexType>
<xs:element name="CIMObject" type="tns:CIMObjectType"/>
<wsdl:message name="GetResponseMessage">
<wsdl:part name="Body" element="tns:CIMObject"/>
</wsdl:message>
Вывод выглядит так:
<soap:Body>
<ns8:CIMObject>
<XXX>
<DeviceID>XXX:YYY</DeviceID>
</XXX>
</ns8:CIMObject>
</soap:Body>
Если я использую:
<xs:complexType name="CIMObjectType">
<xs:sequence>
<xs:any namespace="##other" minOccurs="0" processContents="lax"/>
</xs:sequence>
</xs:complexType>
<xs:element name="CIMObject" type="tns:CIMObjectType"/>
<wsdl:message name="GetResponseMessage">
<wsdl:part name="Body" type="tns:CIMObjectType"/>
</wsdl:message>
Вывод выглядит так:
<soap:Body>
<Body>
<XXX>
<DeviceID>XXX:YYY</DeviceID>
</XXX>
</Body>
</soap:Body>
Но мне нужно:
<soap:Body>
<XXX>
<DeviceID>XXX:YYY</DeviceID>
</XXX>
</soap:Body>
Итак, вопросявляется: как изменить WSDL, чтобы получить вывод, который мне нужен?Любая помощь с благодарностью