`
v5qqcom
  • 浏览: 1277015 次
文章分类
社区版块
存档分类
最新评论

xfire开发实例两个方法--HelloWorld篇

 
阅读更多

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文件的内容如下:

<!-- START SNIPPET: services -->
<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中。文件的位置如下:

webapps/xfire/WEB-INF/classes/META-INF/xfire/services.xml;

webapps/xfire/WEB-INF/classes/com/liuxiang/xfire/HelloService.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任务:

<taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath" />
build.xml文件的内容如下:

<?xml version="1.0"?>
<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了。

第二个方法:


利用xfire生成web服务客户端的方法有多种,Eclipse Plugin为XFire的WSDL->Code generator提供了Eclipse支持,它需要Eclipse 3.2和Java 5。这里我们用Eclipse Plugin根据wsdl文件地址生成客户端代码,而我们只需要编写几行代码即可实现调用web服务。下面就是方法步骤:
第一步,安装插件。
打开Eclipse的Help菜单,选择”Software Updates”,然后再选择”Find and Install.”
选择"Search for new features to install",然后点击Next
选择"Create New Remote Site", 在name中输入"XFire",在eclipse update site中输入http://dist.codehaus.org/xfire/update/
选择OK
选择Finish。
注意完成上述操作后,eclipse要下载和安装插件,时间长短要视网速而定,请耐心等待,安装完成时还要重启eclipse。
第二步,使用插件。
首先新建一个java项目XFireProject,然后依次选择菜单File->New->Other ,选择XFire文件夹下的Code generation from WSDL document,打开代码生成向导,如图二所示。

WSDL的地址栏填入http://localhost:8080/WSProject/services/HelloService?wsdl,Output directory栏中点浏览按钮,选择我们刚才新建的项目XFireProject,这两项是必填的。可选项中,package一栏可以选已经存在的包名,如果不填这一项,代码生成器会在wsdl目标命名空间的基础上创建一个。
完成后,可以看到项目中多了XFire类库,还有package下面的生成的一些类。此时要保证IDE的Tomcat服务器是打开的。
此时,在调用服务之前,还有一个重要的步骤,从XFireProject项目的右键菜单里调出Properties配置窗口,选中左面一栏中的XFire项,右面会列出所有与XFire运行有关的类库,按图三中所示的,选中一些类库,这些类库在调用本服务时是必须的。

所有的配置都已经完成,最后就是编写代码完成调用。代码如下:


1package wsClient;
2
3import hao.HelloServiceClient;
4import hao.HelloServicePortType;
5
6public class Invoke {
7
8 /** *//**
9 * 这个方法调用web服务并返回服务执行的结果
10 * @param yourName
11 * @return
12 */
13 public static String invokeServiceNow(String yourName)
14 {
15 HelloServiceClient service=new HelloServiceClient();
16 HelloServicePortType port=service.getHelloServiceHttpPort();
17 return port.sayHello(yourName);
18 }
19 /** *//**
20 * @param args
21 */
22 public static void main(String[] args) {
23 // TODO Auto-generated method stub
24 String MyName="xshy";
25 System.out.println(Invoke.invokeServiceNow(MyName));
26 }
27}
28

最后程序运行得到的输出结果是“xshy,你好!”。
注意:在运行调用程序时,Tomcat也必须是打开的。

参考文章:

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lcj8/archive/2008/06/07/2520157.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics