Questa regola segnala i riferimenti a uno dei seguenti tipi di schema:
http://www.w3.org/2001/XMLSchema:duration, http://www.w3.org/2001/XMLSchema:dateTime,
http://www.w3.org/2001/XMLSchema:time, http://www.w3.org/2001/XMLSchema:date,
http://www.w3.org/2001/XMLSchema:gYearMonth, http://www.w3.org/2001/XMLSchema:gYear, NAMESPACE:gMonth,
http://www.w3.org/2001/XMLSchema:gDay
Questi tipi di schema e i loro tipi Java correlati a JAX-RPC
java.util.String
e
java.util.Calendar
non sono supportati da JAX-WS.
La migrazione a JAX-WS e JAXB richiederà l'uso di tali tipi di schema con
l'uso di questi tipi di schema con i tipi Java supportati
javax.xml.datatype.XMLGregorianCalendar
invece.
Un esempio di classe Calendario JAX-RPC si presenta come:
import java.util.Calendar;
importare java.rmi.RemoteException;
public Calendar calculateShippingDate(Calendar requestedDate) throws RemoteException; {
// Impostare la data sulla data che ci è stata inviata e aggiungere 7 giorni.
requestedDate.addjava.util.Calendar.DAY_OF_MONTH, 7);
// . . .
return requestedDate;
}
Un esempio di classe JAX-WS XMLGregorianCalendar si presenta come:
import javax.xml.datatype.XMLGregorianCalendar;
importare javax.xml.datatype.DatatypeConfigurationException;
public XMLGregorianCalendar calculateShippingDate(
XMLGregorianCalendar requestedDate) {
try {
// Creare una fabbrica di tipi di dati.
DatatypeFactory df = DatatypeFactory.newInstance();
// Impostare la data sulla data che ci è stata inviata e aggiungere 7 giorni
aggiungere 7 giorni.
Duration duration = df.newDuration("P7D");
requestedDate.add(duration);
} catchDatatypeConfigurationException e) {
// TODO Blocco di cattura autogenerato
e.printStackTrace();
}
// . . .
return requestedDate;
}
Come si può vedere dall'esempio precedente, il parametro di ingresso è cambiato dal tipo
java.util.Calendar
a
javax.xml.datatype.XMLGregorianCalendar
.
Questo perché il WSDL ha specificato che questi parametri devono essere di tipo,
xsd:dateTime
, JAX-RPC mappa questo tipo di dati in
java.util.Calendar
, mentre JAX-WS e JAXB la mappano su
javax.xml.datatype.XMLGregorianCalendar
.