Esta regla marca las referencias a cualquiera de los siguientes tipos de esquema:
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
Estos tipos de esquema y sus tipos Java relacionados con JAX-RPC
java.util.String
y
java.util.Calendar
no son compatibles con JAX-WS.
La migración a JAX-WS y JAXB requerirá la
el uso de esos tipos de esquema con el tipo Java compatible
javax.xml.datatype.XMLGregorianCalendar
en su lugar.
Un ejemplo de una clase Calendario JAX-RPC tiene el siguiente aspecto:
import java.util.Calendar;
import java.rmi.RemoteException;
public Calendar calculateShippingDate(Calendar requestedDate) throws RemoteException; {
establezca la fecha que se nos envió y añada 7 días.
requestedDate.addjava.util.Calendar.DAY_OF_MONTH, 7);
...// ...
return requestedDate;
}
Un ejemplo de una clase JAX-WS XMLGregorianCalendar tiene el siguiente aspecto:
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
public XMLGregorianCalendar calculateShippingDate(
XMLGregorianCalendar requestedDate) {
try {
// Crear una fábrica de tipos de datos.
DatatypeFactory df = DatatypeFactory.newInstance();
establecer la fecha a la fecha que se nos envió y
añadir 7 días.
duración = df.newDuration("P7D");
requestedDate.add(duration);
} catchDatatypeConfigurationException e) {
// TODO Bloque catch autogenerado
e.printStackTrace();
}
. . .
return requestedDate;
}
Como se puede ver en el ejemplo anterior el parámetro de entrada ha cambiado de tipo
java.util.Calendar
por:
javax.xml.datatype.XMLGregorianCalendar
.
Esto se debe a que el WSDL especifica que estos parámetros son de tipo,
xsd:dateTime
jAX-RPC asigna este tipo de datos a
java.util.Calendar
mientras que JAX-WS y JAXB lo asignan a
javax.xml.datatype.XMLGregorianCalendar
.