Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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
如何在JavaSOAP中使用相同的参数名进行接收和发送_Java_Soap - Fatal编程技术网

如何在JavaSOAP中使用相同的参数名进行接收和发送

如何在JavaSOAP中使用相同的参数名进行接收和发送,java,soap,Java,Soap,我有一个SOAP web服务代码,如下所示: public void sumAndMultiplyAndReference (@WebParam(name = "firstnumber")int a, @WebParam(name = "firstnumber")int b, @WebParam(name = "referencenumber")int c @WebParam(name = "sum", mode = WebParam.Mode.OUT) Holder<Integer

我有一个SOAP web服务代码,如下所示:

public void sumAndMultiplyAndReference
(@WebParam(name = "firstnumber")int a,
 @WebParam(name = "firstnumber")int b,
 @WebParam(name = "referencenumber")int c
 @WebParam(name = "sum", mode = WebParam.Mode.OUT) Holder<Integer> sum,
 @WebParam(name = "multiply", mode = WebParam.Mode.OUT) Holder<Integer> multiply,
 @WebParam(name = "reference", mode = WebParam.Mode.OUT) Holder<Integer> reference){
sum.value = a + b;
multiply.value = a * b;
reference.value = c;
}
public void sum和多重引用
(@WebParam(name=“firstnumber”)inta,
@WebParam(name=“firstnumber”)第b页,
@WebParam(name=“referencenumber”)int c
@WebParam(name=“sum”,mode=WebParam.mode.OUT)持有人金额,
@WebParam(name=“multiply”,mode=WebParam.mode.OUT)持有者倍增,
@WebParam(name=“reference”,mode=WebParam.mode.OUT)持有者参考){
总和值=a+b;
乘以.value=a*b;
参考值=c;
}
它工作得很好。但是应该在代码中更改什么,以便请求参数name=referencenumber和应答参数name相同

注意:此处-请求参数
name=referencenumber


响应参数
name=reference

使用
webgram.Mode.INOUT
,这样您就可以双向使用它

阅读,下面是摘录

如果将保持器指定为WebParam.Mode.INOUT参数,则 客户端也可以使用它们发送数据和应用程序。这个 然后,将使用来自 客户端请求。应用程序可以在最终完成之前检查数据 用响应值覆盖它

这对我很有用:

package org.toto.bla;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import javax.xml.ws.Holder;
@WebService
public class WSTest {
    @WebMethod
    public void sumAndMultiplyAndReference(@WebParam(name = "firstnumber") int a, @WebParam(name = "secondnumber") int b,
                                           @WebParam(name = "referencenumber") int c,
                                           @WebParam(name = "sum", mode = WebParam.Mode.OUT) Holder<Integer> sum,
                                           @WebParam(name = "multiply", mode = WebParam.Mode.OUT) Holder<Integer> multiply,
                                           @WebParam(name = "referencenumber", mode = WebParam.Mode.OUT) Holder<Integer> reference) {
        sum.value = a + b;
        multiply.value = a * b;
        reference.value = c;
    }
}

它生成了完全相同的XSD。

谢谢克拉普苏,它对我有用。正是我想要的。:-)谢谢hagrawal,这对我有用。正是我想要的。:-)我只是想知道为什么要接受你的答案,我想我的答案是第一个,并且已经具备了解决你问题所需的一切……嗨@raazan kurunju,为什么它对你不起作用?对我来说,它甚至不用INOUT也能正常工作
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:ns0="http://bla.toto.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://exporter.vas.asgs.atos.net/">
   <xsd:complexType name="sumAndMultiplyAndReferenceResponse">
      <xsd:sequence>
         <xsd:element name="sum" type="xsd:int" minOccurs="0"/>
         <xsd:element name="multiply" type="xsd:int" minOccurs="0"/>
         <xsd:element name="referencenumber" type="xsd:int" minOccurs="0"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:complexType name="sumAndMultiplyAndReference">
      <xsd:sequence>
         <xsd:element name="firstnumber" type="xsd:int"/>
         <xsd:element name="secondnumber" type="xsd:int"/>
         <xsd:element name="referencenumber" type="xsd:int"/>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:element name="sumAndMultiplyAndReferenceResponse" type="ns0:sumAndMultiplyAndReferenceResponse"/>
   <xsd:element name="sumAndMultiplyAndReference" type="ns0:sumAndMultiplyAndReference"/>
</xsd:schema>
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import javax.xml.ws.Holder;

@WebService
public class WSTest {
    @WebMethod
    public void sumAndMultiplyAndReference(@WebParam(name = "firstnumber") int a, @WebParam(name = "secondnumber") int b,
                                           @WebParam(name = "sum", mode = WebParam.Mode.OUT) Holder<Integer> sum,
                                           @WebParam(name = "multiply", mode = WebParam.Mode.OUT) Holder<Integer> multiply,
                                           @WebParam(name = "referencenumber", mode = WebParam.Mode.INOUT) Holder<Integer> c) {
        sum.value = a + b;
        multiply.value = a * b;
    }
}