Може ли 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
Какво мога да направя, ако използвам подхода на последния договор, както е описано в 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