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 工具包里面都有。

         

 


 

    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)  项目目录截图


 

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

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

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

    

 

5. 测试客户端

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

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

    

 

 

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 是过时的技术,

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

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

猜你喜欢

转载自iqeq00.iteye.com/blog/2021670