在网上找了很多关于XFire整合webservice相关的文章,发现都不齐全,让人学起来很费解,下面我给大家详细的讲解一下步骤,让初学者很容易掌握使用;

一、服务端编写

1、在Myeclipse中新建web project,我取名为XFireServer,这个自己随便取,在webRoot中的web-info的lib中导入XFire整合webservice相关jar包,在我的资源库中直接下载使用:http://download.csdn.net/detail/harderxin/8665367

我使用的XFire版本为1.2.6

2、配置web.xml文件,添加XFireServlet

<?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/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><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>/servlet/XFireServlet/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

3、定义我们需要发布服务的接口及实现类,例如我的接口如下:

package com.xin.service;import com.xin.bean.User;/*** 定义发布服务的接口* @author Lucene**/
public interface IHelloService {//跟人说hellopublic String sayHello(String name);//得到用户信息public User gerUser(User user);
}

定义我们的实现类:

package com.xin.service;import com.xin.bean.User;/*** 定义接口的实现类* @author Lucene**/
public class HelloService implements IHelloService {public User gerUser(User user) {User newUser=new User();newUser.setId("new:"+user.getId());newUser.setName("new:"+user.getName());return newUser;}public String sayHello(String name) {return "hello:"+name;}}

里面用到的实体对象User,定义出来:

package com.xin.bean;//实体
public class User {private String id;private String name;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

4、在src目录下新建META-INF文件夹,然后在里面新建xfire文件夹,将services.xml文件放入其中,services.xml文件如下:

<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0"><service><!-- 服务名称 --><name>HelloService</name><!-- 接口的类名称 全路径--><serviceClass>com.xin.service.IHelloService</serviceClass><!-- 实现类名称 全路径--><implementationClass>com.xin.service.HelloService</implementationClass><!-- webservice的命名空间,可以随便取名字 --><namespace>http://com.xin.service/webservice/hello</namespace></service>
</beans>
</span>

欧了,服务端差不多了,将我们的系统部署在Tomcat服务器中,在浏览器中输入webservice地址:

webservice地址的确定:当我们的services.xml文件配置好之后,WebService的地址也就确定了,地址为http://主机地址:端口号/工程名/在web.xml文件中配置的XFire的Servlet的mapping的模式/在services.xml文件中配置的name节点值
,我这个系统里面的webservice地址为:http://localhost:8080/XFireServer/services/HelloService,其实也可以输入:
http://localhost:8080/XFireServer/services/HelloService?wsdl,出现如下页面,则表示我们的webservice部署成功:

好了,下面我们可以开始编写客户端了:

第一种情况:客户端应用程序与webservice在同一应用程序中

package com.xin.test;import java.net.MalformedURLException;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.xin.bean.User;
import com.xin.service.IHelloService;/*** 测试本地客户端调用,此应用程序与webservice在同一应用程序中* webservice地址的确定:* services.xml文件配置好之后,WebService的地址也就确定了,地址为http://主机地址:端口号/工程名/在web.xml文件中配置的* XFire的Servlet的mapping的模式/在services.xml文件中配置的name节点值* 浏览器中输入:http://localhost:8080/XFireServer/services/HelloService?wsdl* @author Lucene**/
public class Client {public static void main(String[] args) throws MalformedURLException {Service service=new ObjectServiceFactory().create(IHelloService.class);XFireProxyFactory factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire());String url="http://localhost:8080/XFireServer/services/HelloService";IHelloService helloService=(IHelloService) factory.create(service, url);System.out.println(helloService.sayHello("wuxin"));User user=new User();user.setId("001");user.setName("mary");String userId=helloService.gerUser(user).getId();String userName=helloService.gerUser(user).getName();System.out.println("userId:"+userId+",userName:"+userName);}
}

测试结果:

hello:wuxin
userId:new:001,userName:new:mary

第二种情况:客户端应用程序与webservice不在同一应用程序中,例如我们在myeclipse中再建立一个java项目:
XFireClient,新建lib目录,同样导入我们上面xfire的jar包,将其添加到项目中

在src目录下新建build.properties文件:

src.dir=.
lib.dir=D\:/MyEclipse 8.6/XFireClient/lib
wsdl.dir=http\://localhost\:8080/XFireServer/services/HelloService?wsdl

同样在src目录下新建build.xml文件,其中的相关目录引用了上面的build.properties文件:

<?xml version="1.0" encoding="UTF-8"?>
<project name="WebService" basedir="." default="gen-webservice"><property file="build.properties"></property><path id="project-classpath"><fileset dir="${lib.dir}"><include name="**/*.jar" /></fileset></path><target name="gen-webservice"><taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="project-classpath" /><wsgen outputDirectory="${src.dir}" wsdl="${wsdl.dir}" package="com.xin.client" overwrite="true" /></target>
</project>

我们这里使用ant工具通过http://localhost:8080/XFireServer/services/HelloService?wsdl文件来生成我们的客户端代码,一般myeclipse中都会集成了ant工具,我们在build.xml中右键run as-->ant build就可以了,它就会在我们客户端的src目录下自动生成如下所示的代码:

上面这些代码都是通过ant工具自动生成出来的哦!

编写我们的客户端测试代码:

package com.xin.test;import com.xin.bean.ObjectFactory;
import com.xin.bean.User;
import com.xin.client.HelloServiceClient;
import com.xin.client.HelloServicePortType;/*** 客户端测试代码* @author Lucene**/
public class Test {public static void main(String[] args) {HelloServiceClient service=new HelloServiceClient();HelloServicePortType portType=service.getHelloServiceHttpPort();System.out.println(portType.sayHello("张三"));ObjectFactory factory=new ObjectFactory();User user=factory.createUser();user.setName(factory.createUserName("李四"));System.out.println(portType.gerUser(user).getName().getValue());}
}

记住我们的服务端是不能停的,测试输出:

hello:张三
new:李四
上面就是一个详细的通过xfire整合webservice的过程,其中的原理以及xfire的源代码实现希望大家能够自己去探索,程序员就应该要有钻研精神,不仅仅只是学会了用别人的框架,而应该去了解其原理,包括ant工具生成的代码类是什么意思,都应该要去了解,加深对xfire的理解!!
完整代码下载地址,我的资源库:

XFire整合webservice相关推荐

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

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

  2. 【webservice】spring整合webservice RS风格

    [webservice]spring整合webservice RS风格 UserService package cn.zxl.cxf.service;import java.util.List;imp ...

  3. 用xfire开发webservice实例

    http://sailinglxg.iteye.com/blog/173679 用xfire开发webservice总结 本实例是以简单的加减法(a+b和a-b)运算实现用xfire开发webserv ...

  4. java xfire webservice 异步_[Java教程]Java中使用webservice,简化开发(xfire的webservice)...

    [Java教程]Java中使用webservice,简化开发(xfire的webservice) 0 2016-01-07 15:00:11 首先,使用到的jar先导入项目中, xbean-sprin ...

  5. .net webservice studio调用方法传参_springboot整合WebService简单版

    一.什么是webservice 这里给大家分享一下我们的专栏<Java 进阶集中营>,每天都会给大家分享一个最新的java技术内容,有优秀的技术讯息,也欢迎分享在我的专栏里. JAVA 进 ...

  6. Spring项目整合WebService服务遇到问题记录

    项目是用SSM+Maven构建,在整合WebService时,将遇到问题解决方式记录如下: 基于WS风格使用方式 1.所需要类库:     <dependency>         < ...

  7. SpringBoot整合WebService(服务端+客户端)

    SpringBoot整合WebService(服务端+客户端) 文章目录 SpringBoot整合WebService(服务端+客户端) 一.服务端 1.项目结构 2.创建好SpringBoot项目后 ...

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

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

  9. 用XFire发布WebService

    WebService的概念就不多说了,直接进入主题:如何用XFire发布WebService.比较流行的发布WebService的框架有XFire.CXF.AXIS等等.到目前为止接触过的有XFire ...

最新文章

  1. Quartz框架中的Trigger
  2. FaceBook机器学习开源DL模块
  3. Android应用框架浅析
  4. 【DP】数的划分(ybtoj DP-1-3)
  5. python加法例子_第二讲 做加法的例子
  6. D3 BarChart
  7. 基类显式继承接口,类继承基类时又继承同一接口,引发接口方法混乱(显式继承接口的弊端)...
  8. 元胞自动机简介(美赛复习一)
  9. 基于STM32f103c8t6的红外接收发送
  10. XML文件的操作--上
  11. 高质量蓝牙耳机推荐,2023年热销火爆的蓝牙耳机推荐
  12. 【小知识】TVS瞬态抑制二极管与齐纳二极管(稳压管)的差异点分析
  13. python大数据就业方向_大数据方向:就业主要从事哪些工作?
  14. 用python来压缩图片的大小
  15. 计算机excel中行高在哪里,电脑Excel表格怎么对行高和列宽进行调整
  16. 完美解决丨 - [SyntaxError: invalid syntax](#SyntaxError-invalid-syntax)
  17. C-means聚类算法实战 — 地表植被分类/数字聚类
  18. 通用进制转换工具,可实现进制之间的任意转换
  19. (一)android 桌面悬浮窗 录屏源码放送
  20. android面试总结加强再加强版

热门文章

  1. django基础到高手知识笔记总结,50页笔记,共10大模块(第一期).md
  2. Android PMS原理总结
  3. APT60DQ60BG ASEMI超快软恢复整流二极管
  4. Linux面试题汇总-3
  5. LinuxTomcat安装部署
  6. 安装docker guacamole
  7. unity跨场景保存(跨场景BGM的连续播放)
  8. 自动提取关键词的软件-根据核心关键词提取长尾词
  9. [CareerCup] 18.3 Randomly Generate Integers 随机生成数字
  10. java 微信分享朋友圈 链接显示图片_java微信公众平台分享朋友圈