肥皂消息响应正文修改帮助

时间:2010-09-01 04:36:34

标签: java web-services wsdl annotations jbossws

我一直在使用jbossws-cxf来处理Web服务。我认为问题不在于我正在使用的实现,而在于如何生成代码。这是我的pojo,带有Web服务的注释。

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)];
    }

}

我测试webservice(使用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")会将soap请求更改为正确的标记,但soap响应消息仍使用ns2而不是MyWSResponse。

1 个答案:

答案 0 :(得分:2)

您必须将新的attribute添加到WebService注释中:

@WebService(targetNamespace="http://ws.test.matt.com/")

如果您未指定任何targetNamespace,则会使用package