Я играл с веб-сервисами, используя jbossws-cxf. Я не думаю, что проблема заключается в реализации, которую я использую, а в том, как генерируется код. Вот мое 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) равен
<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 таким образом с ними.
ОБНОВЛЕНИЕ: изменение @WebService
на @WebService(targetNamespace="http://MyWSResponse")
изменило запрос мыла на правильный тег, но ответное сообщение мыла по-прежнему использует ns2 вместо MyWSResponse.