Java Soap消息响应正文修改帮助
我一直在使用jbossws-cxf处理web服务。我认为问题不在于我使用的实现,而在于如何生成代码。这是我的pojo,带有web服务的注释Java Soap消息响应正文修改帮助,java,web-services,wsdl,annotations,jbossws,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 =
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响应是
你好
除了手动编辑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。您必须向Web服务注释添加新的属性,如下所示:
@WebService(targetNamespace="http://ws.test.matt.com/")
如果您没有指定任何targetNamespace
将使用包
。好的,我看到了,但是这如何允许我在soap消息中使用MyWSResponse标记?因为实际上并不存在,所以它怎么知道元素名使用什么呢?我问这个问题的原因是因为我使用过其他Web服务,它们在soap:Body元素中有不同的元素名,我想知道它们是如何实现的?是否尝试将targetNamespace属性添加到WebResult注释并将其设置为空?如targetNamespace=“”???无需多说,只需尝试使用“从生成的wsdl中删除命名空间前缀”进行搜索
@WebService(targetNamespace="http://ws.test.matt.com/")