我一直在玩弄使用 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)时,我的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。
更新:更改@WebService
为@WebService(targetNamespace="http://MyWSResponse")
将soap 请求更改为正确的标记,但soap 响应消息仍使用ns2 而不是MyWSResponse。