[webservices开发]使用XFire开发一个简单的web服务

 

在这一节,你将了解到如何将一个普通的 java 文件转换一个 web 服务, services.xml 文件是如何定义的,如何发布这个 web 服务、如何获得这个服务的 WSDL 、如何创建 Client 代码、如何测试这个 web 服务。

 

首先打开 Eclipse ,创建一个普通的 java 工程,将 xfire 所需的 jar xfire jar 加入到工程所需的类库引用中。创建一个简单的 java 文件,这个 java 文件简单到只提供一个 add 方法

package com.kuaff.xfire.samples;

public class MathService

{

    public long add( int p1, int p2)

    {

        return p1 + p2;

    }

}

 

src 目录下创建 meta-inf/xfire 目录,然后在 meta-inf/xfire 目录下创建 services.xml 文件文件内容为:

<beans xmlns="http://xfire.codehaus.org/config/1.0">

  <service>

    <name>MathService</name>

    <namespace>http://www.kuaff.com/xfire/samples/MathService</namespace>

    <serviceClass>com.kuaff.xfire.samples.MathService</serviceClass>

  </service>

</beans>

 

这个文档定义了你要发布的 web 服务,这个定义了一个名为 MathService 的服务,服务类为 com.kuaff.xfire.samples.MathService

 

这样我们的一个简单的 web 服务就开发完成了,下面就要把它发布出去。

 

将工程 bin 目录下的所有的文件复制到第一节中配置的 tomcat/webapps/xfire/WEB-INF/classes 文件夹下,启动 tomcat ,你就可以检查这个 web 服务是否发布成功了。

打开浏览器,在浏览器地址栏中输入 http://localhost:8080/xfire/services/ ,正常情况下应该浏览器应该显示类似下图所示的页面

 

  注意:请在浏览器中输入 http://localhost:8080/xfire/services/ 而不是 http://localhost:8080/xfire/services ,虽然两者显示页面相同,但是点击页面上的链接,后者的链接会出错,因为后者后面少加了一个 / ”。

 

点击 [wsdl] 链接,可以查看这个 web 服务的 wsdl 文档。

 

如果在你的机器上的显示如上面所示,则说明你的这个 web 服务发布成功,可以正常提供基于 http web 服务。

 

下面一个问题就是如何开发一个 Client ,来消费(使用)这个 web 服务。

XFire Axis asp.net 以及其它的一些商业产品都提供了根据 wsdl 文档创建客户端代码的工具。这里采用 Xfire 提供的 wsgen 工具来创建客户端的访问代码

 

Wsgen xfire 提供的一个 ant task task 的申明如下:

<taskdef name= "wsgen" classname= "org.codehaus.xfire.gen.WsGenTask" classpathref= "xfire jar 路径 " />

 

这样,就可以在 build.xml 文件中使用这个 task

<wsgen outputDirectory= "client" wsdl= "MathService.wsdl" package= "com.kuaff.xfire.samples" />

outputDirectory 属性定义创建的代码所在的文件夹, wsdl web 服务的 wsdl 文件 package 代表创建的代码 packege 。还可以通过 binding 属性制定 bind 类型: jaxb 或者是 xmlbeans

 

这样,就会在 client 文件夹下创建多个 java 文件,这些文件提供了访问 web 服务的方法

在这里声明一点,创建的代码大量的使用了 java 注释,这个 JSE5 中提供的新特性,所以你需要使用 JSE5 编译, Eclipse 也必须要 3.1 以上的版本。

 

这段 ant 脚本将创建三个文件 MathServicePortType MathServiceImpl MathServiceClient MathServicePortType 是这个 web 服务的客户端接口存根、 MathServiceImpl 实现了这个接口。 MathServiceClient 封装了访问这个 web 服务的方法

最后,你可以创建一个单元测试类,用来测试这个客户端类。这个类的内容如下:

package com.kuaff.xfire.samples;

import junit.framework.TestCase;

public class MathServiceClientTest extends TestCase

{

    public void testAdd()

    {

        MathServiceClient client = new MathServiceClient();

        MathServicePortType ms = client.getMathServiceHttpPort();

        long result = ms.add(10,20);

        assertEquals (result,30);

    }

}

相关文章

1.使用ajax调用varxhr;functioninvoke(){if(window.ActiveXO...
               好不容易把WebService服务器...
1新建一个工程项目用来做服务端增加一个MyService1类文件pac...
packagecom.transsion.util;importjava.io.BufferedReader;i...
再生产wsdl文件时重写描述文件1usingSystem;2usingSystem.Co...
一般情况下,使用eclipse自带的jax-ws生成webservice会自动生...