WebService的概念就不多说了,直接进入主题:如何用XFire发布WebService。比较流行的发布WebService的框架有XFire、CXF、AXIS等等。到目前为止接触过的有XFire和CXF,所以想写个例子,以备以后不时之需。

要使用XFire,首先需要去下载XFire的Jar包,然后新建一个Web工程,将XFire的jar包放在lib目录中,全部引入。在web.xml文件中加入XFire的Servlet,代码如下:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>XFireServlet</servlet-name><servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class></servlet><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/services</url-pattern></servlet-mapping>
</web-app>

接口很简单,就是一个返回字符串的方法。在WebService的方法中,建议输入参数和返回参数都设为String类型,设置为对象类型的话还得做转换,比较麻烦。在我所做过的项目的WebService中,不管是我提供服务还是我去调用别人的服务,输入参数和返回参数都是String类型的。

public interface IXFireService {public String sayHello(String name);
}

接下来提供一个接口的实现类,代码如下:

package cn.com.huixin.webservice.impl;public class XFireServiceImpl implements IXFireService {public String sayHello(String name) {return name + " say: Hello!";}}

代码比较简单,就不再赘述了。接口和实现类准备好后,就该XFire的配置文件了,在这个文件中将上述的接口和实现类加入配置之后,才能将其作为WebService发布出去。按照XFire的约定,要在工程的classes目录中建一个名为META-INF的文件夹,在这个文件夹中建一个xfire的文件夹,在该文件夹中建一个名为services.xml的配置文件。所以在工程的src\META-INF\xfire路径下建这样一个文件,Eclipse编译之后,就会在classes\META-INF\xfire目录中出现services.xml文件。services.xml文件的代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0"><service><name>xfireService</name><namespace>http://www.huixin.com.cn/webservice/helloworld</namespace><serviceClass>cn.com.huixin.webservice.IXFireService</serviceClass><implementationClass>cn.com.huixin.webservice.impl.XFireServiceImpl</implementationClass></service>
</beans>

其中,name节点指明了WebService的地址,namespace指明了WebService的命名空间,命名空间可以随便取,我查了一下,网上也没说明白命名空间的具体作用。serviceClass节点指明了WebService的接口,包括这个接口的包名。implementationClass节点是WebService接口的实现类的完整路径名。这个文h件配置好之后,WebService的地址也就确定了,地址为http://主机地址:端口号/工程名/在web.xml文件中配置的XFire的Servlet的mapping的模式/在services.xml文件中配置的name节点值。以我这个例子来说,主机就是localhost,端口号是tomcat的默认端口号8080,工程名是webservice,在web.xml文件中配置的XFireConfigurableServlet的mapping模式是services,在services.xml文件中配置的name节点的值是xfireService,所以我的这个WebService的地址就是:http://localhost:8080/webservice/services/xfireService。将工程启动起来,在IE浏览器中访问http://localhost:8080/webservice/services/xfireService?wsdl这个WebService的wsdl地址,如果出现类似下边的xml文件格式的画面,就说明WebService发布成功了:

WebService发布成功之后,就可以写客户端来访问这个Web服务了。下来介绍如何使用XFire来编写客户端访问这个WebService。

新建一个java工程,将XFire的Jar包引入。我们使用的这种方式有一个缺点,就是在客户端必须知道WebService的接口,所以现将WebService的接口IXFireService复制过来,然后新建一个java类,名字为XFireClient,代码如下:

package cn.com.huixin.webservice;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;public class XFireClient {public static void main(String[] args) {Service serviceModel = new ObjectServiceFactory().create(IXFireService.class);XFire xfire = XFireFactory.newInstance().getXFire();XFireProxyFactory factory = new XFireProxyFactory(xfire);String serviceUrl = "http://localhost:8080/webservice/services/xfireService";IXFireService client = null;try {client = (IXFireService) factory.create(serviceModel, serviceUrl);} catch (Exception e) {System.out.println("Client call webservice has exception: " + e.toString());}String retvalue = client.sayHello("andrew Lau");System.out.println(retvalue);}}

其中的serviceUrl就是我们发布的WebService的地址,注意此处后边不需要“?wsdl”,IXFireService就是WebService的接口。

在此后的博文中我会介绍不需要引入WebService接口来调用WebService的方法。

用XFire发布WebService相关推荐

  1. IDEA快速 实现 SpringMVC 整合xfire 发布 WebService 服务

    文章目录 一.idea快速搭建web项目 二.xfire 服务方搭建 1. pom依赖 2. web.xml 3. 创建一个entity 4. 创建一个接口 5. 创建接口实现类 6. 在WEB-IN ...

  2. Java程序员从笨鸟到菜鸟之(一百零九)一步一步学习webservice(三)开发第一个基于XFire的webservice

    在日常开发中,常用的webservice引擎主要有Axis,axis2,Xfire以及cxf(Xfire的升级版).现在只有axis2和cxf官方有更新.今天我们先以一个比较老的引擎为例.来讲诉一下w ...

  3. 使用CXF发布WebService服务简单实例

    一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...

  4. CXF框架发布WebService服务的例子

    1.CXF框架概念介绍 Apache CXF 是一个开源的 WebService 框架,CXF可以用来构建和开发 WebService,这些服务可以支持多种协议,比如:SOAP.POST/HTTP.H ...

  5. 采用CXF框架发布WebService

    1. CXF介绍 :soa的框架     * cxf 是 Celtrix (ESB框架)和 XFire(webserivice) 合并而成,并且捐给了apache       * CxF的核心是org ...

  6. XFire整合webservice

    在网上找了很多关于XFire整合webservice相关的文章,发现都不齐全,让人学起来很费解,下面我给大家详细的讲解一下步骤,让初学者很容易掌握使用: 一.服务端编写 1.在Myeclipse中新建 ...

  7. java xfire_Java -- 在Eclipse上使用XFire开发WebService

    终于,使用Java完成了一个WebService的例子,其中的一个非常小的问题,折腾了我将近一天的时间.下面给出步骤,说明在Java平台上如何开发WebService. 采用的工具:Eclipse3. ...

  8. XFire发布Web Services

    步骤 1. 把XFire依赖的jar包放入lib文件夹下. 2. 在web.xml中加入如下代码: 3. 编写程序代码 首先编写一个功能的接口类. package com.yc.web.service ...

  9. 使用Apache cxf 和Spring在Tomcat下发布Webservice指南

    转载 http://blog.csdn.net/zhangzhaokun/article/details/4750021 最近学习了如何使用apache cxf和Spring发布webservice, ...

最新文章

  1. oracle11g中SQL优化(SQL TUNING)新特性之Adaptive Cursor Sharing (ACS)
  2. MYSQL索引结构学习笔记
  3. python网站服务器好麻烦_python写的网站,云服务器经常无法访问
  4. 32位linux时间戳,32位unix时间戳哪一年用尽
  5. Nginx负载均衡如何进行配置
  6. 首页大屏广告效果 jquery轮播图淡入淡出
  7. 【粉丝福利】Logo评选投票,礼品赠送!
  8. react privateRoute
  9. DNS污染攻击详细教程
  10. 计算机网络里的DHCP是什么,路由器设置中的dhcp是什么意思?
  11. 使用PPT画图:浅尝辄止
  12. 兰州大学百年校庆--风雨百年萃英路
  13. 分享120个ASP源码,总有一款适合您
  14. web网页设计期末课程大作业~超高仿英雄联盟LOL游戏官网设计与实现(HTML+CSS+JavaScript)...
  15. 自由人NFT:数字藏品乱象中,我们如何辨别?
  16. AC自动机模板(【CJOJ1435】)
  17. mysql弱类型_PHP弱类型及相关函数Bypass
  18. Keycloak授权服务指南
  19. 响应式导航(从水平到垂直)的分析与实现
  20. 函数周期表丨EXCEPT

热门文章

  1. Recycler 笔记
  2. phy基础知识总结 common register总结
  3. 用Python将文本转换为DNA序列
  4. 小孩扁桃体肿大3度能自愈吗?6岁小孩扁桃体肥大怎么治效果好?
  5. 七天学会javascript之动态删除某行(44)
  6. 模拟面试策划书;校园模拟面试策划书;求职模拟面试大赛策划书;经管学院模拟求职大赛策划书;大学生模拟面试大赛策划书
  7. 8.3.9 加载租赁数据至租赁事实表
  8. html 获取title值,分享两种获取WEB标题title的方法
  9. python read_excel 参数_详解pandas库pd.read_excel操作读取excel文件参数整理与实例
  10. phpStudy出现80端口被占用,占用进程为System