Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Soap消息响应正文修改帮助_Java_Web Services_Wsdl_Annotations_Jbossws - Fatal编程技术网

Java Soap消息响应正文修改帮助

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 =

我一直在使用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响应是


你好
除了手动编辑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/")