Может ли JAX-WS сопоставить дату XSD (xs: dateTime) с календарем Java?

Может JAX-WS отображать Дата XML-схемы (xs:dateTime), включая часовой пояс, на Java Calendar?


person Derek Mahar    schedule 16.11.2010    source источник


Ответы (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>
person Catchwa    schedule 16.11.2010
comment
Что я могу сделать, если я использую подход Contract Last, как описано в static.springsource.org/spring-ws/sites/1.5/reference/html/ (генерировать WSDL и схему из исходного кода Java), а не подход Contract First, который предполагает ваш пример? - person Derek Mahar; 17.11.2010
comment
@Derek - я обновил свой ответ, но я еще не пробовал последний подход контракта. - person Catchwa; 17.11.2010
comment
Я попробовал ваше предложение, но без @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.

person StaxMan    schedule 17.11.2010