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

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

 

首先打开Eclipse,创建一个普通的java工程,将xfire所需的jarxfirejar加入到工程所需的类库引用中。创建一个简单的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服务发布成功,可以正常提供基于httpweb服务。

 

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

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

 

Wsgenxfire提供的一个ant tasktask的申明如下:

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

 

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

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

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

 

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

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

 

这段ant脚本将创建三个文件:MathServicePortTypeMathServiceImplMathServiceClientMathServicePortType是这个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);

    }

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值