Java SOAPBinding.ParameterStyle.BARE与SOAPBinding.ParameterStyle.WRAPPED的比较:根据请求生成的参数较少

Java SOAPBinding.ParameterStyle.BARE与SOAPBinding.ParameterStyle.WRAPPED的比较:根据请求生成的参数较少,java,web-services,jax-ws,Java,Web Services,Jax Ws,我使用SOAPUI并通过JAX-WS导入生成java类 我有一个这样的界面 @WebService(name = "test", targetNamespace = "http://lang.java") @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) @XmlSeeAlso({ ObjectFactory.class }) public interface Test{ @WebMethod(actio

我使用SOAPUI并通过JAX-WS导入生成java类

我有一个这样的界面

@WebService(name = "test", targetNamespace = "http://lang.java")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
@XmlSeeAlso({
    ObjectFactory.class
})
public interface Test{

@WebMethod(action = "https://...action")
@WebResult(name = "getBean", targetNamespace = "http://...getBean", partName = "getBean")
public Bean test(
@WebParam(name = "parameter1", targetNamespace = "http://lang.java", partName = "parameter1")
String parameter1,
@WebParam(name = "parameter2", targetNamespace = "http://lang.java", partName = "parameter2")
String parameter2,
@WebParam(name = "parameter3", targetNamespace = "http://lang.java", partName = "parameter3")
String parameter3,
@WebParam(name = "parameter4", targetNamespace = "http://lang.java", partName = "parameter4")
long parameter4);
}
如果使用SOAPBinding.ParameterStyle.WRAPPED,则生成的正文消息为

<S:Body>
<ns2:test xmlns:ns2="http://lang.java" xmlns:ns3="http://...getBean">
<ns2:parameter1>1</ns2:parameter1>
<ns2:parameter2>2</ns2:parameter2>
<ns2:parameter3>a</ns2:parameter3>
<ns2:parameter4>1</ns2:parameter4>
</ns2:test>
</S:Body>

1.
2.
A.
1.
如果使用SOAPBinding.ParameterStyle.BARE,则会生成正文消息

<S:Body>
<ns2:parameter1 xmlns:ns2="http://lang.java" xmlns:ns3="http://...getBean">1</ns2:parameter1>
</S:Body>

1.

为什么会有差异?为什么在Bare选项中它只生成第一个参数?我需要创建所有参数的裸选项

没问题!我在这里找到了答案

Bare选项只能使用一个参数。当我们使用Bare时,消息请求的主体中必须有零个或一个元素。解决方案是使用我们想要的所有参数创建一个对象,并将该对象发送给该方法