Это обсуждение на Java Ranch Forum прояснило его для меня.В частности, этот пример сделан Джейсоном Ирвином :
BARE сгенерированный клиентом интерфейс (с использованием wsimport):
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface IMathServer {
@WebMethod
@WebResult(name = "addNumsResponse")
public AddNumsResponse addNums(@WebParam(name = "addNums") AddNums parameters);
}
WRAPPED сгенерированный клиентом интерфейс (с использованием wsimport):
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public interface IMathServer {
@WebMethod
@WebResult(name = "addNumsResponse")
public int addNums(@WebParam(name = "num1") int num1, @WebParam(name = "num2") int num2);
}
Оба эти фрагмента кода генерируют одно и то же сообщение:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:addNums xmlns:ns2="http://SoapStyles/">
<num1>1</num1>
<num2>2</num2>
</ns2:addNums>
</S:Body>
</S:Envelope>
Как сказано R Srini вТо же самое обсуждается в параметрах, а не в коде.
Единственное отличие, генерирующее клиентов, заключается в том, как вы собираетесь создавать параметры в клиенте, но они оба будут генерировать одно и то же сообщение (упакованное или развернутое) в зависимости от службы WSDL.
С BARE у вас будет только верхний элемент (параметр) с «подпараметрами» внутри.Этот BARE будет отправлен напрямую (без «обертывания»).В то время как с WRAPPED у вас будут все эти «подпараметры» на первом уровне, и клиент автоматически обернет их в другой верхний элемент.
Цитируя Джейсона Ирвина:
Был передан только один параметр ("addNums"), и он был "голым" в теле.Во втором случае параметры были «голыми» в коде, но «обернутыми» во время выполнения JAX-WS.
Надеюсь, это поможет!