Sto preparando alcuni servizi web con Spring WS. A causa del suo primo contratto, ho seguito la sua guida e preparato un XSD.
Finora, il mio XML di richiesta del servizio Web assomiglia a questo (questa è una richiesta resa SoapUI):
<soapenv:Envelope ...>
<soapenv:Header/>
<soapenv:Body>
<sch:WorkOrderRequest>
<sch:workOrder>
<sch:catOds>?</sch:catOds>
<sch:descr>?</sch:descr>
<sch:idEqui>?</sch:idEqui>
<...>
</sch:workOrder>
</sch:WorkOrderRequest>
</soapenv:Body>
</soapenv:Envelope>
Codice endpoint Java:
@org.springframework.ws.server.endpoint.annotation.Endpoint
public class WorkOrderEndpoint {
private static final String NAMESPACE_URI = ...;
@ResponsePayload
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "WorkOrderRequest")
public WorkOrderResponse handleWorkOrderRequest(@RequestPayload WorkOrderRequest request) throws Exception {
// ...
}
}
Richiedi oggetto di livello superiore
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
})
@XmlRootElement(name = "WorkOrderRequest", namespace = "...")
public class WorkOrderRequest {
@XmlElement(namespace = "", required = true)
protected WorkOrder workOrder;
// ...
}
Busta "Ordine di lavoro":
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "WorkOrder", ...)
public class WorkOrder {
@XmlElement(namespace = ...)
protected String catOds;
@XmlElement(namespace = ...)
protected String descr;
@XmlElement(namespace = ...)
protected String idEqui;
// ...
}
Sto iniziando a chiedermi se questo extra WorkOrder
wrap sia utile. Prima di rimuoverlo vorrei ricevere alcuni suggerimenti: dovrei liberarmene e spostare tutte le proprietà all'interno dell'oggetto richiesta? La rimozione potrebbe rendere il servizio Web meno a prova di futuro?