XFire下根据WSDL生成Client Stub,并测试Client

 在上篇文章中,已经讲到了如何使用XFire,Spring,Struts和WSDL生成Web Service服务器端代码,并通过WSDL动态测试,但是通过WSDL动态测试不是分布式的初衷,根据Client Stub才是真正的分布式.

       在下面我将在上篇文章的基础上,通过WSDL生成Client Stub,并且测试.

       其实网上有很多这方面的文章,但是我几乎尽我所能查遍了baidu,都是些翻译XFire用户文档,大家去看看XFire用户文档就会发觉其不知所云,非常模糊,根本无法学习,也许它只是为那些高手写的.

       下面是我通过搜索Google很久才有幸得到,在此一并感谢表示感谢.

       注意:二个JAR包不能少:xfire-all-1.2.6.jar,和jaxb-xjc-2.0.1.jar,为什么要,大家在以后的学习中就会发现的.

       一. 编写Ant脚本build.xml,就是用org.codehaus.xfire.gen.WsGenTask生成Client Stub,放在org.ymcn.ws.client下,其中的参数应用个人而异:

<?xml version="1.0"?>
<project default="genfiles" basedir=".">
    <property name="lib" value="WebRoot/WEB-INF/lib" />
    <path id="myclasspath">
        <fileset dir="${lib}">
            <include name="*.jar" />
        </fileset>
        <pathelement location="${genfiles}" />
    </path>
    <property name="code_path" value="src" />
    <property name="wsdl_path" value="http://192.168.1.102:8888/wss/HelloWorldService.ws?wsdl" />
    <property name="code_package" value="org.ymcn.ws.client" />
    <target name="genfiles" description="Generate the files">
        <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath" />
        <wsgen outputDirectory="${code_path}" wsdl="${wsdl_path}" package="${code_package}" binding="xmlbeans" overwrite="true" />
    </target>
</project>

     二.在MyEclipse中运行此Ant 脚本

     此时会在org.ymcn.ws.client下生成三个文件:HelloWorldClient.java, HelloWorldImpl.java, HelloWorldPortType.java,其中第一个和第三个是非常重要的.

     三.测试Client Stub:

package org.ymcn.test.client;

import org.ymcn.ws.client.HelloWorldClient;
import org.ymcn.ws.client.HelloWorldPortType;

public class HelloWorldJaxb {
public static void main(String[] args) {
   try {
    HelloWorldClient client = new HelloWorldClient();
    HelloWorldPortType service = client.getHelloWorldHttpPort();
    String result = service.sayHello("老牛啊");
   
    System.out.println(result);
   
   } catch(Exception e) {
    e.printStackTrace();
   }
}
}

     在控制台输出:你好, 老牛啊, 成功.

     四.发布

     把那三个Stub打包,就可以在分布式环境下测试了.

posted @ 2010-04-07 09:57  cuker919  阅读(216)  评论(0编辑  收藏  举报