Может JAX-WS отображать Дата XML-схемы (xs:dateTime
), включая часовой пояс, на Java Calendar
?
Может ли JAX-WS сопоставить дату XSD (xs: dateTime) с календарем Java?
Ответы (2)
Да, оно может.
Первый подход с контрактом
Вам необходимо использовать элемент jaxb:javaType
. здесь есть некоторая общая информация и пример того, что вам нужно сделайте это здесь.
Контракт последний подход
@WebMethod(operationName = "getTest")
public Calendar getTest(@WebParam(name = "input") Calendar input) {
input.roll(Calendar.DAY_OF_YEAR, 1);
return input
}
Сопоставляется с:
<xs:complexType name="getTest">
<xs:sequence>
<xs:element name="input" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getTestResponse">
<xs:sequence>
<xs:element name="return" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
@WebParam
и это работает.
- person Derek Mahar; 19.11.2010
Я думаю, что это будет работать по умолчанию; JAXB (связыватель данных, который используют реализации JAX-WS) должен уметь преобразовывать между значениями XML и java.util.Calendar.
Если нет, тип данных даты/времени по умолчанию, используемый с XML, — javax.xml.datatype.XMLGregorianCalendar, который можно преобразовать с помощью метода toGregorianCalendar() (который будет иметь тип java.util.GregorianCalendar, подкласс java.util.Calendar). . Таким образом, одна из возможностей состоит в том, чтобы привязать данные к XMLGregorianCalendar, а затем просто преобразовать их туда и обратно при доступе. Это также можно автоматизировать с помощью XMLJavaTypeAdapter.