如何在JavaSOAP中使用相同的参数名进行接收和发送
我有一个SOAP web服务代码,如下所示:如何在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
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;
}
}