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打包,就可以在分布式环境下测试了.