воскресенье, 26 августа 2012 г.

Apache CXF 2.6.1. Mapping xsd:dateTime to java.util.Date

Задумался я, как бы мне сделать отображение xsd:dateTime на класс java.util.Date. С ним просто удобнее работать.

Решение оказалось простым - нужно при генерации классов с помощью wsdl2java указать jaxb binding. В этом файле можно указать свои правила отображения. После небольшого иследования я привёл файл к следующему виду:
<jxb:bindings version="2.0"
              xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
              xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <jxb:bindings schemaLocation="file:/home/duglas/workspacejuno/WsTimeService2/wsdl/businessTime_schema.xsd"  node="/xs:schema">
    <jxb:globalBindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <jxb:javaType name="java.util.Date" xmlType="xs:dateTime"
                    parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDateTime"
                    printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDateTime"/>
    </jxb:globalBindings>
  </jxb:bindings>
</jxb:bindings>

С виду ничего необычного. На сайте apache cxf приводится почти такой же файл. Ключевое слово здесь - почти, так как в версии 2.6.1 разработчики переместили класс DataTypeAdapter  в пакет org.apache.cxf.xjc.runtime.

Комментариев нет:

Отправить комментарий