Hace muchos años que había abandonado el blog, recordando
viejos tiempos quise retomarlo y les traigo el siguiente ejemplo:
Hace unos días me solicitaron realizar un Core de servicios
web en SOAP y REST, quise mandar la misma salida en ambos solo que uno como
objeto JSON y otro como XML en el SOAP, en el JSON envío un Map y quise hacer
lo mismo en el SOAP sin embargo el WAX-WS no permite retornar este tipo de
objetos. Para ello realice una Clase Wrapper que dentro tuviera un objeto de
tipo Map, y con ello se resolvió dicho tema.
Les dejo por aquí el ejemplo:
Clase Wrapper
import java.io.Serializable;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlAccessorType(XmlAccessType.FIELD)
public class MapWrapper implements Serializable{
private static final long serialVersionUID = 1L;
private Map<String, Object> map;
public MapWrapper() {}
public MapWrapper(Map<String, Object> map) {
this.map = map;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("MapWrapper [map=");
builder.append(map);
builder.append("]");
return builder.toString();
}
}
Método del WebService
@WebMethod(operationName = "consultaCt")
public MapWrapper consultaCt() {
Map<String, Object> map = new HashMap<String,Object>();
map.put("estatus", 1);
map.put("msg", "Respuesta correcta");
map.put("cts", ctBO.selectAll());
MapWrapper mapWrapper = new MapWrapper(map);
return mapWrapper;
}