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 a JAXB-re való áttelepítéshez a támogatott Java -típussal rendelkező sématípusok használatára lesz szükség 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 Calendar calculateShippingDate(Calendar requestedDate ) dob RemoteException; {
    // Állítsa be a dátumot a nekünk elküldött dátumra, és adjon hozzá 7 napot.
    requestedDate .add( java.util.Calendar.DAY_OF_MONTH , 7);
    // . . .
    
    visszaküldés 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) {
    próbáld meg {
        // Hozzon létre egy adattípus-gyárat.
        DatatypeFactory df = DatatypeFactory.newInstance( );
        // Állítsa be a dátumot a nekünk elküldött dátumra, és adjon hozzá 7 napot.
        Időtartam = df.newDuration("P7D" );
        requestedDate .add(duration);
    } fogás ( DatatypeConfigurationException e) {
        // TODO Automatikusan generált fogási blokk
        e.printStackTrace();
        }
        // . . .
    
        visszaküldés requestedDate;
    }

Amint az a fenti példából látható, a bemeneti paraméter típusától függően változik java.util.Calendar eddig: javax.xml.datatype.XMLGregorianCalendar .
Ennek az az oka, hogy a WSDL ezeket a paramétereket olyan típusúnak adta meg, xsd:dateTime , a JAX-RPC leképezi ezt az adattípust java.util.Calendar , míg a JAX-WS és a JAXB leképezi javax.xml.datatype.XMLGregorianCalendar .