Diese Regel kennzeichnet Verweise auf einen der folgenden Schematypen:
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
Diese Schematypen und ihre JAX-RPC-bezogenen Java
java.util.String
und
java.util.Calendar
werden von JAX-WS nicht unterstützt.
Die Migration zu JAX-WS und JAXB erfordert die
die Verwendung dieser Schematypen mit dem unterstützten Java
javax.xml.datatype.XMLGregorianCalendar
stattdessen.
Ein Beispiel für eine JAX-RPC-Kalenderklasse sieht so aus:
import java.util.Calendar;
import java.rmi.RemoteException;
public Calendar calculateShippingDate(Calendar requestedDate) throws RemoteException; {
// Setzen Sie das Datum auf das Datum, das uns übermittelt wurde, und addieren Sie 7 Tage.
requestedDate.addjava.util.Calendar.DAY_OF_MONTH, 7);
// . . .
return requestedDate;
}
Ein Beispiel für eine JAX-WS XMLGregorianCalendar sieht so aus:
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
public XMLGregorianCalendar calculateShippingDate(
XMLGregorianCalendar requestedDate) {
try {
// Erstellen Sie eine Datentypfabrik.
DatatypeFactory df = DatatypeFactory.newInstance();
// Setzen Sie das Datum auf das Datum, das an uns gesendet wurde und
fügen Sie 7 Tage hinzu.
Duration duration = df.newDuration("P7D");
requestedDate.add(duration);
} catchDatatypeConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// . . .
return requestedDate;
}
Wie Sie im obigen Beispiel sehen können, hat sich der Eingabeparameter vom Typ
java.util.Calendar
in
javax.xml.datatype.XMLGregorianCalendar
.
Dies liegt daran, dass die WSDL diese Parameter als Typ spezifiziert hat,
xsd:dateTime
jAX-RPC bildet diesen Datentyp auf
java.util.Calendar
, während JAX-WS und JAXB es auf
javax.xml.datatype.XMLGregorianCalendar
.