私はjbossws-cxfを使用してWebサービスをいじっています。問題は、使用している実装ではなく、コードの生成方法にあると思います。これが、Webサービスの注釈付きの私のpojoです。
package com.matt.test.ws;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public class JbossWSTestImpl {
private String[] statuses = {"Hello","JbossWS is cool","GoodBye","l33t hax0rz"};
@WebMethod
@WebResult(name="status")
public String getStatus(){
return statuses[new java.util.Random().nextInt(3)];
}
}
(soapUIを使用して)Webサービスをテストしたときのsoapの応答は
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getStatusResponse xmlns:ns2="http://ws.test.matt.com/">
<status>Hello</status>
</ns2:getStatusResponse>
</soap:Body>
</soap:Envelope>
wsdlファイルを手動で編集して、「ns2」という名前空間を変更し、応答を別のタグでラップできるようにする方法はありますか。私が欲しいのは
<soap:Envelope ...>
<soap:Body>
<MyWSResponse xmlns="http://ws.test.matt.com/">
<status>Hello</status>
</MyWSResponse>
<soap:Body>
<soap:Envelope>
それを変更できる、使用していない注釈はありますか?現時点では、wsdlをそのように変更する方法を見つけていません。
更新: soapリクエストを正しいタグに変更する@WebService
ように@WebService(targetNamespace="http://MyWSResponse")
変更しましたが、soap応答メッセージは引き続きMyWSResponseではなくns2を使用します。