domenica 3 febbraio 2013

SoapBinding style Wrapped oppure Bare

La differenza tra lo style Wrapped oppure Bare si ripercuote sulla generazione del body soap di risposta, non nel WSDL che rimane lo stesso sia se inseriamo l'annotazione Bare piuttosto che Wrapped.
Dato il seguente Web Service:


import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.ParameterStyle;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;

@WebService
@SOAPBinding(style=Style.DOCUMENT,parameterStyle=ParameterStyle.BARE,use=Use.LITERAL)
public class WsTest {
@WebMethod(operationName="test")
public String reverse(){
 return "qaswed";
}
@WebMethod
public String reverse(String s){
 StringBuffer sb=new StringBuffer();
 sb.append(s);
 return sb.reverse().toString();
}
}




In questo caso abbiamo 2 metodi java con lo stesso nome e parametri diversi in input, il classico caso di overloading.
Se non fosse stato specificato un o
Tale Web Service non si riesce a deployare se mettiamo il ParameterStyle a WRAPPED. Questo perchè JAXB scegliendo Wrapped crea dei Wrapper sulla base del nome del metodo e quindi va in conflitto.
Nel caso di annotazione del tipo BARE i wrapper non sono creati.

Nessun commento:

Posta un commento