воскресенье, 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.

вторник, 21 августа 2012 г.

Apache cxf 2.6.1 и Eclipse (part 2)

В этой части я решил избавиться от зависимости в виде Eclipse и научиться генерировать веб-сервис с помощью CXF.

суббота, 18 августа 2012 г.

понедельник, 13 августа 2012 г.

Ant. Первое знакомство.


Функции Ant:
1) компиляция
2) junit тесты
3) junit отчёты
4) проверка кода на соответствие стилю программирования checkstyle (http://checkstyle.sourceforge.net)
5) создание jar\war файла
6) создания meta-inf файла
7) создание javadoc
8) генерация классов для клиента к веб-сервису с помощью wsdl2java (из пакета apache cxf)
9) выполнение sql скриптов к СУБД
10) установка war файла на сервер приложений, например Tomcat

Можно ли заменить билдер в Eclipse и оставить только ant?
В Eclipse невозможно полностью отключить встроенный builder проекта, поэтому в данном случае исполнение задачи javac не будет иметь смысл.

Состав целей проекта:
default - цель по умолчанию
all - создание дистрибутива и тестирование
clean - удаление всех созданных файлов
dist - создание дистрибутива
docs - создание документации
test - запуск unit тестов
noop - вывод на экран названия проекта
diag - вывод параметров окружения ant.


Управление большими проектами:
С помощью задачи ant можно вызывать цели в других build файлах. Начиная с версии 1.7 появилась задача subant, которая может исполнять build файлы.