Это правило помечает ссылки на любой из следующих типов схем:
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
Эти типы схем и связанные с ними типы Java , связанные с JAX-RPC
java.util.String
и
java.util.Calendar
не поддерживаются JAX-WS.
Миграция на JAX-WS и JAXB потребует использования этих типов схем с поддерживаемым типом Java .
javax.xml.datatype.XMLGregorianCalendar
вместо.
Пример класса календаря JAX-RPC выглядит так:
импорт java.util.Calendar ;
импорт java.rmi.RemoteException;
public Calendar calculateShippingDate(Calendar requestedDate ) выдает RemoteException; {
// Установите дату, которая была нам отправлена, и добавьте 7 дней.
requestedDate .add( java.util.Calendar.DAY_OF_MONTH , 7);
// . . .
возврат requestedDate;
}
Пример класса JAX-WS XMLGregorianCalendar выглядит следующим образом:
импорт javax.xml.datatype.XMLGregorianCalendar;
импорт javax.xml.datatype.DatatypeConfigurationException;
публичный XMLGregorianCalendar calculateShippingDate(
XMLGregorianCalendar requestedDate) {
попробуйте {
// Создаем фабрику типов данных.
DatatypeFactory df = DatatypeFactory.newInstance( );
// Установите дату на ту, которая была нам отправлена, и добавьте 7 дней.
Длительность = df.newDuration("P7D" );
requestedDate .add(duration);
} catch ( DatatypeConfigurationException e) {
// TODO Автоматически сгенерированный блок catch
e.printStackTrace();
}
// . . .
возврат requestedDate;
}
Как видно из примера выше, входной параметр имеет изменения в типе
java.util.Calendar
к
javax.xml.datatype.XMLGregorianCalendar
.
Это связано с тем, что WSDL определяет эти параметры как имеющие тип,
xsd:dateTime
, JAX-RPC сопоставляет этот тип данных с
java.util.Calendar
, в то время как JAX-WS и JAXB сопоставляют его с
javax.xml.datatype.XMLGregorianCalendar
.