Nu utilizați JAX-RPC Calendar și alte tipuri de date Date

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 .