Ant生成xfire webservice 客户端

1. 配置 ant 环境

    能看到这里的相信这都不是问题,实在不明白的请查阅我 ant 相关文档。

    本例 ant 版本:Apache Ant(TM) version 1.9.3。

2. 下载 xfire 工具包

    http://xfire.codehaus.org/Download,一般来说下载最新版本就是。

    本例 xfire 版本:xfire-1.2.6。

3. 建立 eclipse 项目工程

    创建最普通的 Java Project 项目工程即可。

    a)  创建 test 测试源码包

    b)  创建 lib 三方依赖 jar 目录,并将所有依赖 jar 引入 classpath,

         大多数依赖的三方 jar 在 xfire 工具包里面都有。

         
Ant生成xfire webservice 客户端
 

Ant生成xfire webservice 客户端
 

    c)  创建 build.xml,内容如下:

         

<?xml version="1.0" encoding="UTF-8"?>
<project name="XFire-WsGen" basedir="." default="jar">
    <property name="src.dir" value="${basedir}/src" />
    <property name="lib.dir" value="${basedir}/lib" />
    <property name="output.dir" value="${basedir}/output" />
    <property name="wsdl.dir" value="http://127.0.0.1/MoneyCenter/services/User?wsdl"/>
    <property name="package.dir" value="moneycentry.client.usermoney" />
    <property name="jar.file" value="${output.dir}/moneycentry-usermoney.jar" />
    <path id="mypath">
        <fileset file="${lib.dir}/*.jar">
            <include name="*.jar" />
        </fileset>
    </path>
    <target name="clean">
        <delete includeEmptyDirs="true">
            <fileset dir="${src.dir}" includes="**/*" defaultexcludes="no"/>
        </delete>
        <delete dir="${output.dir}"/>
    </target>
    <target name="init" depends="clean">
        <mkdir dir="${output.dir}" />
    </target>
    <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="mypath"></taskdef>
    <target name="wsgen" depends="init">
        <taskdef name='WsGenTask' classname="org.codehaus.xfire.gen.WsGenTask" classpathref="mypath" />
        <WsGenTask outputDirectory="${src.dir}" wsdl="${wsdl.dir}" package="${package.dir}" overwrite="true" />
    </target>
    <target name="compile" depends="wsgen">
        <copy todir="${output.dir}/classes/META-INF">
            <fileset dir="${src.dir}/META-INF"/>
        </copy>
        <javac srcdir="${src.dir}" destdir="${output.dir}/classes" debug="true" failonerror="true" classpathref="mypath" />
    </target>
    <target name="jar" depends="compile">
        <jar destfile="${jar.file}" basedir="${output.dir}/classes"></jar>
    </target>
</project>

         经过整理后的 build.xml 可以做到多项目通用,只需稍作修改

         i.  wsdl.dir

             不同的 webservice,肯定有不同的 wsdl 地址。

         ii. package.dir

             生成客户端默认 package 名称。

         iii. jar.file

             生成 jar 文件的 jar 包名称。

    d)  项目目录截图

Ant生成xfire webservice 客户端
 

4. 利用 ant 生成客户端代码

    右键 build.xml –> Run As –> Ant Build

    当看到控制台显示 ant 构建成功的消息,src 下面也生成相关文件,则说明成功。

    
Ant生成xfire webservice 客户端
 

5. 测试客户端

    在 test 源码包下面新建 com.xfire.lynch.MainTest 测试类,介于只是简单测试,就不

    搭建 Junit 测试环境,而采用 main 函数测试,看到控制台正常打印出数据,说明调用成功。

    
Ant生成xfire webservice 客户端
 
Ant生成xfire webservice 客户端
 

6. 代码讲解

UserClient uc = new UserClient();

    获取 User 客户端类。

UserPortType upt = uc.getUserHttpPort();

    获取 User 服务器端的所有接口方法。

String test = upt.findUserById("123456","dab871c3-cad4-4d2f-846f-235c00a1bcc5");

    远程调用 User 类里的 findUserById 方法。

7. 与 spring 集成

    大多数应用都是要和 spring 集成,本例只需将每次运行 ant 后,output 目录下生成的

    moneycentry-user.jar 和依赖的三方 jar 添加进你的 spring 环境中。在 spring 中定

    义一个 bean,需要的时候注入就可以使用了。

<bean id="userClient" class="moneycentry.client.user.UserClient"></bean>

8. 后记感受

    Maven:

           最近和公司其他系统进行衔接,本来我是个 maven 党,还是个没经历过 ant 时代

    的 maven 党。开始使用 eclipse 打包,对面系统的 wsdl 总是不断的变化,无奈之下

    只好用 ant 来生成 jar,大大提升了效率。通过学习 ant 对 maven 中的一些理念也有

    了新的理解,可见学习一个技术也可从同等技术对比中获益。

    Webservice:

           第一次使用 ws 技术,不过也不算太复杂。虽然很多大牛都说 ws 是过时的技术,

    不过学习来说还是值得的。不知各位看官看到此处理解如何,介于本人文档写作水平有

    限,还望多多谅解,也祝大家学习愉快。

ant

相关推荐