Ne használjon JAX-RPC naptárt és más dátum adattípusokat

Ez a szabály megjelöli a hivatkozásokat a következő sématípusok bármelyikére: 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

Ezek a sématípusok és a JAX-RPC-vel kapcsolatos Java típusok java.util.String és java.util.Calendar a JAX-WS nem támogatja.
A JAX-WS-re és JAXB-re való áttéréshez a következőkre lesz szükség a a sématípusok használata a támogatott Java típusokkal javax.xml.datatype.XMLGregorianCalendar helyette.

A JAX-RPC naptár osztály példája így néz ki:

import java.util.Calendar;
import java.rmi.RemoteException;
    
public Calendar calculateShippingDate(Calendar requestedDate) throws RemoteException; {
    // Set the date to the date that was sent to us and add 7 days.
    requestedDate.add(java.util.Calendar.DAY_OF_MONTH, 7);
    // . . .
    
    return requestedDate;     
    }

A JAX-WS XMLGregorianCalendar osztály példája így néz ki:

import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
    
public XMLGregorianCalendar calculateShippingDate(
    XMLGregorianCalendar requestedDate) {
    try {
        // Create a data type factory.
        DatatypeFactory df = DatatypeFactory.newInstance();
        // Set the date to the date that was sent to us és adjunk hozzá 7 napot.
        Duration duration = df.newDuration("P7D");
        requestedDate.add(duration);
    } catch (DatatypeConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
        // . . .
    
        return requestedDate;
    }

Amint a fenti példából látható, a bemeneti paraméter típusa megváltozik a java.util.Calendar eddig: javax.xml.datatype.XMLGregorianCalendar .
Ennek oka, hogy a WSDL szerint ezeknek a paramétereknek típusosnak kell lenniük, xsd:dateTime , a JAX-RPC ezt az adattípust a következőre képezi le java.util.Calendar , míg a JAX-WS és a JAXB a következőre képezi le javax.xml.datatype.XMLGregorianCalendar .