Toto pravidlo označuje odkazy na kterýkoli z následujících typů schémat:
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
Tyto typy schémat a jejich typy Java související s JAX-RPC
java.util.String
a
java.util.Calendar
nejsou podporovány JAX-WS.
Migrace na JAX-WS a JAXB bude vyžadovat použití těchto typů schémat s podporovaným typem Java
javax.xml.datatype.XMLGregorianCalendar
místo toho.
Příklad třídy JAX-RPC Calendar vypadá takto:
import java.util.Calendar ;
import java.rmi.RemoteException;
veřejný kalendář calculateShippingDate(Calendar requestedDate kalendáře ) vyvolá RemoteException; {
// Nastavte datum na datum, které nám bylo zasláno, a přidejte 7 dní.
requestedDate .add( java.util.Calendar.DAY_OF_MONTH , 7);
// . . .
requestedDate;
}
Příklad třídy JAX-WS XMLGregorianCalendar vypadá takto:
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
public XMLGregorianCalendar calculateShippingDate(
XMLGregorianCalendar requestedDate) {
zkuste {
// Vytvořte továrnu na datové typy.
DatatypeFactory df = DatatypeFactory.newInstance( );
// Nastavte datum na datum, které nám bylo zasláno, a přidejte 7 dní.
Trvání trvání = df.newDuration("P7D" );
requestedDate .add(duration);
} catch ( DatatypeConfigurationException e) {
// Automaticky generovaný blok úlovků TODO
e.printStackTrace();
}
// . . .
requestedDate;
}
Jak můžete vidět z příkladu výše, vstupní parametr se od typu mění
java.util.Calendar
do
javax.xml.datatype.XMLGregorianCalendar
.
Důvodem je, že WSDL specifikoval tyto parametry jako typ,
xsd:dateTime
, JAX-RPC mapuje tento datový typ na
java.util.Calendar
, zatímco JAX-WS a JAXB jej mapují
javax.xml.datatype.XMLGregorianCalendar
.