В этой части я решил избавиться от зависимости в виде Eclipse и научиться генерировать веб-сервис с помощью CXF.
Это можно делать с помощью класса org.apache.cxf.tools.wsdlto.WSDLToJava. У этого класса есть замечательная опция "-ant". И всё бы хорошо, но при виде созданного build файла хочется рыдать навзрыд. Поэтому я урезал этот файл и в результате у меня получилось следующее:
<?xml version="1.0" encoding="UTF-8"?>
<!-- ======================================================================
18.08.2012 22:02:20
cxfbuild
Sample build file, which generates WS artifacts
duglas
====================================================================== -->
<project name="cxfbuild" default="default" basedir=".">
<description>
Sample build file, which generates WS artifacts
</description>
<!-- cxf home dir-->
<property name="cxf.home" location="/home/duglas/Загрузки/apachecxf/apache-cxf-2.6.1"/>
<property name="wsdl.location" location="${basedir}/wsdl/businessTime.wsdl"/>
<!-- place to store generated artifacts -->
<property name="wssource" location="${basedir}/src"/>
<path id="cxf.classpath">
<fileset dir="${cxf.home}/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${basedir}"/>
</path>
<!-- =================================
target: default
================================= -->
<target name="default" depends="cxfWSDLToJava" description="Sample build file, whuch generates artifacts">
</target>
<!-- - - - - - - - - - - - - - - - - -
target: cxfWSDLToJava
- - - - - - - - - - - - - - - - - -->
<target name="cxfWSDLToJava">
<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">
<arg value="-server"/>
<arg value="-impl"/>
<arg value="-d"/>
<arg value="${wssource}"/>
<arg value="${wsdl.location}"/>
<classpath>
<path refid="cxf.classpath"/>
</classpath>
</java>
</target>
</project>
Согласен, не так красиво, как могло бы, но главное сводится к вызову класса org.apache.cxf.tools.wsdlto.WSDLToJava, который генерирует артефакты. Непонятно только, почему в данном случае все генерируемые классы попадают в один пакет. Хотелось бы, что jaxb классы попадали в свой пакет. С этим ещё только предстоит разбираться. Несмотря на уродливость этого способа, он кажется наиболее жизнеспособным, так как для своей работы требуется указать всего лишь путь до apache cxf.
Комментариев нет:
Отправить комментарий