Non utilizzare JAX-RPC Calendar e altri tipi di dati Date

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 .