Ich habe einen wsdl
Webservice mit cxf
erstellt.Wie verhindert man Namespace Wrapper-Tags in SOAP WSDL?
Problem: Sowohl meine Anfrage und Antwort enthalten ein zusätzliches Wrapper-Element mit dem Namespace.
Frage: Ist es möglich, dieses Wrapper-Element zu verhindern? Weil es für mich keinen Mehrwert bringt und nur ein zusätzliches Element ist, wenn andere meinen Webservice nutzen würden.
Zum Beispiel möchte ich die <com:MyNameOperation><MyNameReq>
Hierarchie im folgenden Beispiel reduzieren, um nur ein Element, nicht zwei verschachtelte Elemente zu sein.
@WebService(name = "myname", serviceName = "myname", targetNamespace = "com.test")
publi class MySoapServlet {
@WebMethod(operationName = "MyNameOperation")
@WebResult(name = "MyNameResult")
public MyResponse getRsp(@WebParam(name = "MyNameReq") MyNameReq req) {
//return...
}
}
@XmlRootElement(name = "MyNameResponse")
@XmlAccessorType(XmlAccessType.FIELD)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MyNameResponse {
private String name;
}
Resultierende Wsdl Struktur:
Anfrage:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:de="com.test">
<soapenv:Header/>
<soapenv:Body>
<!-- how can I omit this namespace element completely? -->
<com:MyNameOperation>
<MyNameReq>
...
</MyNameReq>
</com:MyNameOperation>
</soapenv:Body>
</soapenv:Envelope>
Antwort:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<!-- how can I omit this namespace element completely? -->
<ns2:MyNameResponse xmlns:ns2="com.test">
<MyNameResult>
<name>somevalue</name>
</MyNameResult>
</ns2:MyNameResponse>
</soapenv:Body>
</soapenv:Envelope>
, die perfekt geklappt! – membersound