JAX-RPC Kalender und andere Datentypen nicht verwenden

Diese Regel kennzeichnet Verweise auf einen der folgenden Schematypen: 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

Diese Schematypen und ihre JAX-RPC-bezogenen Java java.util.String und java.util.Calendar werden von JAX-WS nicht unterstützt.
Die Migration zu JAX-WS und JAXB erfordert die die Verwendung dieser Schematypen mit dem unterstützten Java javax.xml.datatype.XMLGregorianCalendar stattdessen.

Ein Beispiel für eine JAX-RPC-Kalenderklasse sieht so aus:

import java.util.Calendar;
import java.rmi.RemoteException;
    
public Calendar calculateShippingDate(Calendar requestedDate) throws RemoteException; {
    // Setzen Sie das Datum auf das Datum, das uns übermittelt wurde, und addieren Sie 7 Tage.
    requestedDate.addjava.util.Calendar.DAY_OF_MONTH, 7);
    // . . .
    
    return requestedDate;     
    }

Ein Beispiel für eine JAX-WS XMLGregorianCalendar sieht so aus:

import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
    
public XMLGregorianCalendar calculateShippingDate(
    XMLGregorianCalendar requestedDate) {
    try {
        // Erstellen Sie eine Datentypfabrik.
        DatatypeFactory df = DatatypeFactory.newInstance();
        // Setzen Sie das Datum auf das Datum, das an uns gesendet wurde und fügen Sie 7 Tage hinzu.
        Duration duration = df.newDuration("P7D");
        requestedDate.add(duration);
    } catchDatatypeConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
        // . . .
    
        return requestedDate;
    }

Wie Sie im obigen Beispiel sehen können, hat sich der Eingabeparameter vom Typ java.util.Calendar in javax.xml.datatype.XMLGregorianCalendar .
Dies liegt daran, dass die WSDL diese Parameter als Typ spezifiziert hat, xsd:dateTime jAX-RPC bildet diesen Datentyp auf java.util.Calendar , während JAX-WS und JAXB es auf javax.xml.datatype.XMLGregorianCalendar .