xfire开发实例--HelloWorld篇
本文从最基础的HelloWorld用例开始,介绍如何利用xfire开发web service应用。以后就可以开发复杂的web service应用了。
开发环境:eclipse3.2+tomcat5.5.9+xfire1.2.6
一:在eclipse中新建项目XFireProject
1、建立源文件夹src.main;新建HelloService.java文件,该java文件只声明了一个简单的sayHello(String name)方法,。java文件内容如下:
*
*/
package com.liuxiang.xfire;
/**
* 简单例子HelloWorld例子
* HelloService.java
* com.liuxiang.xfire
* XFireProject
* @author liuxiang mailto:juxtapose@163.com
* 2007-9-9 下午05:01:38
*
*/
public class HelloService {
public String sayHello(String name){
return name + " ,你好! " ;
}
}
2、在src.main目录下新建META-INF/xfire/services.xml文件,该文件用于声明一个service。service.xml文件的内容如下:
< beans xmlns ="http://xfire.codehaus.org/config/1.0" >
< service >
< name > HelloService </ name >
< namespace > http://com.liuxiang.xfireDemo/HelloService </ namespace >
< serviceClass > com.liuxiang.xfire.HelloService </ serviceClass >
</ service >
</ beans >
<!-- END SNIPPET: services -->
3、将将编译后的HelloService.class文件和service.xml文件部署到tomcat中。文件的位置如下:
webappsxfireWEB-INFclassesMETA-INFxfireservices.xml;
webappsxfireWEB-INFclassescomliuxiangxfireHelloService.class;
4、启动tomcat;正确启动tomcat之后,在IE地址栏里输入:http://localhost:8080/xfire/services/ 将会出现如下的页面:该页面正常显示了刚才部署的HelloService。如下图:
如果能正确显示上图,说明刚才的部署成功了。如果不能正确显示,请参照我上一篇文章:xfire1.2.6配置篇。
单击[wsdl],将会出现http://localhost:8080/xfire/services/HelloService?wsdl,即生成的一个wsdl文件。
5、生成web service客户端调用文件
xfire提供了两种生成客户端测试的方式,一种提供了ant脚本,另一种是提供了xfire的eclipse插件;本文介绍了使用ant脚本的方式生成客户端的方式。
首先在项目XFireProject中增加一个build.xml文件。xfire提供了一个ant任务:
build.xml文件的内容如下:
< project name ="XFireProject" default ="genfiles" basedir ="." >
< property name ="lib" value ="lib" />
< path id ="myclasspath" >
< fileset dir ="${lib}" >
< include name ="*.jar" />
</ fileset >
< pathelement location ="${genfiles}" />
</ path >
<!-- 通过XFire ant任务生成客户端代码的存放位置 -->
< property name ="code_path" value ="src.client" />
<!-- 需要生成客户端代码的wsdl文件 -->
< property name ="wsdl_path" value ="http://localhost:8080/xfire/services/HelloService?wsdl" />
<!-- 生成客户端代码的包名 -->
< property name ="code_package" value ="com.liuxiang.xfire.client" />
<!-- Remove classes directory for clean build -->
< target name ="clean" description ="Prepare for clean build" >
< delete dir ="${code_path}" />
< mkdir dir ="${code_path}" />
</ target >
<!-- <target name="genfiles" depends="clean" description="Generate the files"> -->
< target name ="genfiles" description ="Generate the files" >
< taskdef name ="wsgen" classname ="org.codehaus.xfire.gen.WsGenTask" classpathref ="myclasspath" />
<!-- outputDirectory属性定义创建的代码所在的文件夹
wsdl是web服务的wsdl文件
package代表创建的代码的package
-->
< wsgen outputDirectory ="${code_path}" wsdl ="${wsdl_path}" package ="${code_package}" binding ="xmlbeans" />
</ target >
</ project >
执行ant脚本,将会生成客户端代码,共三个文件。会放在包com.liuxiang.xfire.client下面,文件分别是:
HelloServiceClient.java、HelloServiceImpl.java、HelloServicePortType.java
6、编写测试代码,通过调用5中生成的代码,编写TestClient.java文件。文件内容如下:
*
*/
package com.liuxiang.xfire;
import java.net.MalformedURLException;
import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import com.liuxiang.xfire.client.HelloServiceClient;
import com.liuxiang.xfire.client.HelloServicePortType;
/** */ /**
* 通过XFire生成的客户端进行调用
*
* TestClient.java
* com.liuxiang.xfire
* XFireProject
* @author liuxiang mailto:juxtapose@163.com
* 2007-9-9 下午06:54:36
*
*/
public class TestClient ... {
/** *//**
* 客户端测试
* 通过ant脚本生成的客户端进行调用
*
* @param name 传入的参数,客户名字
* @return 返回sayHello()的返回值
*/
public static String testClient(String name)...{
HelloServiceClient helloSC = new HelloServiceClient();
HelloServicePortType helloSP = helloSC.getHelloServiceHttpPort();
String result = helloSP.sayHello(name);
return result;
}
/** *//**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception ...{
System.out.println(testClient("Liuxiang"));
}
}
运行该代码,在控制台会输入如下信息:
Liuxiang,你好!
表明,第一个web service用例已经运行成功了。以后,就可以开发需要的web service了。