0
cxf
でwsdl
ウェブサービスを作成しました。SOAP wsdlの名前空間ラッパータグを防ぐには?
問題:リクエストとレスポンスの両方に、ネームスペースを持つ追加のラッパー要素が含まれています。
質問:このラッパー要素を防ぐことはできますか?なぜなら、私にとっては価値がなく、他の人が私のWebサービスを使用するときの追加要素に過ぎないからです。
たとえば、次の例の<com:MyNameOperation><MyNameReq>
階層を、ネストされた2つの要素ではなく1つの要素に減らしたいとします。
@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;
}
結果のWSDL構造:
要求:
<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>
応答:
あなたがBARE@SOAPBinding(parameterStyle=ParameterStyle.BARE)
parameterstyleユーザが
<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>
だろう! – membersound