2014-11-05 66 views
0

我使用SOAPUI並使用JAX-WS導入生成java類。SOAPBinding.ParameterStyle.BARE vs SOAPBinding.ParameterStyle.WRAPPED:根據請求生成的參數較少

我有這樣

@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> 

如果我使用SOAPBinding.ParameterStyle.BARE產生的身體信息是

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

爲什麼不同?爲什麼在Bare選項中它只生成第一個參數?我需要裸選項創建所有參數

回答

0

它確定!我在這裏找到答案http://www.javajee.com/soap-binding-style-encoding-and-wrapping

裸選項只能使用一個參數。當我們使用Bare時,消息請求必須在Body中有零個或一個元素。解決方案是創建一個包含我們想要的所有參數的對象,並將此對象發送給該方法。