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

Apache cxf 2.6.1 и Eclipse (part 2)

В этой части я решил избавиться от зависимости в виде 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.

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

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