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

news/2024/7/3 1:58:42 标签: web服务, java, 浏览器, eclipse, binding, 文档
 

在这一节,你将了解到如何将一个普通的 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);

    }

}


http://www.niftyadmin.cn/n/592895.html

相关文章

mybatis从入门到精通 源码_面试总被问源码?阿里大牛推荐的5本源码解析文档,让你吊打面试官...

很多人会被公司的技术和业务牵着走。要实现技术提升&#xff0c;除了寻找更大规模的业务外&#xff0c;要时刻保持跳出当前层级和环境来思考的习惯。一般最快捷的方式&#xff0c;就是阅读源码和框架。为什么要阅读源码我们在做项目时候一般会遇到下面的问题&#xff1a;问题一…

第60件事 关于产品运营的10个故事

以前都是缠着师傅问这问那&#xff0c;要这要那&#xff0c;这次师傅主动要求讲讲故事&#xff0c;算是对产品运营课程培训的结束语。师傅领进门&#xff0c;修行在个人&#xff0c;师傅寄予了很高的期望。故事给人带来的启发往往是比较深刻的&#xff0c;会讲故事也是一种能力…

Android AndFix 热修复框架

from: http://blog.csdn.net/mackkill/article/details/51778202 今天带来的是阿里的热修复框架AndFix使用&#xff0c;废话不多说直接看下文。 项目Git地址&#xff1a;https://github.com/alibaba/AndFix lib包&#xff1a;AndFixLib 补丁制作工具&#xff1a; apkpatch ps:上…

[转]window.opener用法

window.opener 实际上就是通过window.open打开的窗体的父窗体。 比如在父窗体parentForm里面 通过 window.open("subForm.html"),那么在subform.html中 window.opener 就代表parentForm,可以通过这种方式设置父窗体的值或者调用js方法。 如&#xff1a;1,window.open…

python接单业余赚钱的门路_用Python赚钱的5个方法,教你业余时间月赚几千外快...

原标题&#xff1a;用Python赚钱的5个方法&#xff0c;教你业余时间月赚几千外快Python作为一门编程语言&#xff0c;一门技术&#xff0c;就一定能够为我们所用&#xff0c;至少赚个外快是绝对没有问题的。我之前做过半年少儿编程老师&#xff0c;一个小学四年级的小孩子都能在…

使用JSPatch平台热修复iosApp

iOS产品开发中常常会遇到这种情况&#xff0c;线上发现一个严重bug,可能是一个crash,可能是一个功能无法使用&#xff0c;这时能做的只是赶紧修复Bug然后提交等待漫长的审核&#xff0c;即使申请加急也不会快到那里去&#xff0c;即使审核完了之后&#xff0c;还要盼望着用户快…

Mac机安装Windows图解

<!--正文内容开始--><!-- google_ad_section_start --> <!-- 正文内部文字导航 : begin --><!-- 正文内部文字导航 : end -->作者&#xff1a;中关村在线 孙希萌 第1页&#xff1a;MacBook笔记本同样牵手WindowsMacBook笔记本同样牵手Windows 自从2005…

12C RAC for ASM添加磁盘步骤

RHEL 7.2使用EMC Powerpath扩容2T磁盘空间&#xff0c;需要添加至以用12C RAC for ASM系统中。下面是具体步骤&#xff0c;主机人员告知扩容别名为data_center_16、data_center_17 1&#xff1a;linux 7 系统下添加映射存储LUN(无需重启)1>查看机器HBA卡信息--两个节点机器都…