Задумался я, как бы мне сделать отображение 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.
Комментариев нет:
Отправить комментарий