Această regulă semnalează referințele la oricare dintre următoarele tipuri de schemă:
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
Aceste tipuri de schemă și tipurile lor Java legate de JAX-RPC
java.util.String
și
java.util.Calendar
nu sunt acceptate de JAX-WS.
Migrarea la JAX-WS și JAXB va necesita utilizarea acelor tipuri de schemă cu tipul Java acceptat
javax.xml.datatype.XMLGregorianCalendar
în schimb.
Un exemplu de clasă JAX-RPC Calendar arată astfel:
import java.util.Calendar ;
import java.rmi.RemoteException;
public Calendar calculateShippingDate(Calendar requestedDate ) aruncă RemoteException; {
// Setați data la data care ne-a fost trimisă și adăugați 7 zile.
requestedDate .add( java.util.Calendar.DAY_OF_MONTH , 7);
// . . .
requestedDate;
}
Un exemplu de clasă JAX-WS XMLGregorianCalendar arată astfel:
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
public XMLGregorianCalendar calculateShippingDate(
XMLGregorianCalendar requestedDate) {
încercați {
// Creați o fabrică de tipuri de date.
DatatypeFactory df = DatatypeFactory.newInstance( );
// Setați data la data care ne-a fost trimisă și adăugați 7 zile.
Duration duration = df.newDuration("P7D" );
requestedDate .add(duration);
} captură ( DatatypeConfigurationException e) {
// TODO Bloc de captură generat automat
e.printStackTrace();
}
// . . .
requestedDate;
}
După cum puteți vedea din exemplul de mai sus, parametrul de intrare are modificări față de tip
java.util.Calendar
până la
javax.xml.datatype.XMLGregorianCalendar
.
Acest lucru se datorează faptului că WSDL a specificat ca acești parametri să fie de tip,
xsd:dateTime
, JAX-RPC mapează acest tip de date la
java.util.Calendar
, în timp ce JAX-WS și JAXB îl mapează la
javax.xml.datatype.XMLGregorianCalendar
.