XFire创建WebService实例应用

XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,
  XFire的配置非常简单,可以非常容易地和Spring集成。
  下载地址:http://xfire.codehaus.org/Download

 一. 使用XFire发布WebService

   1. 创建service接口

  1. package com.test.service;
  2. import com.test.service.bean.User;
  3. public interface IHelloService {
  4. public String sayHello(String name);
  5. public User  getUser(User user);
  6. }
  7. }

 2.创建Service接口的实现类

  1. package com.test.service;
  2. import com.test.service.bean.User;
  3. public class HelloService implements IHelloService{
  4. public String sayHello(String name){
  5. return "Hello, "+name;
  6. }
  7. public User getUser(User user) {
  8. User userNew = new User();
  9. userNew.setId("new:"+user.getId());
  10. userNew.setName("new:"+user.getName());
  11. return userNew;
  12. }
  13. }
  1. package com.test.service.bean;
  2. public class User {
  3. private String id;
  4. private String name;
  5. public String getId() {
  6. return id;
  7. }
  8. public void setId(String id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. }

 

3.在web.xml文件中进行XFire拦截配置,可参照官网提供的sample。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  5. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  6. <servlet>
  7. <servlet-name>XFireServlet</servlet-name>
  8. <servlet-class>
  9. org.codehaus.xfire.transport.http.XFireConfigurableServlet
  10. </servlet-class>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>XFireServlet</servlet-name>
  14. <url-pattern>/servlet/XFireServlet/*</url-pattern>
  15. </servlet-mapping>
  16. <servlet-mapping>
  17. <servlet-name>XFireServlet</servlet-name>
  18. <url-pattern>/services/*</url-pattern>
  19. </servlet-mapping>
  20. </web-app>

 4.在class目录下建立META-INF目录,如(META-INF>xifre->services.xml),
    在services.xml文件中进行webservice服务的发布,可参照官网提供的sample。 

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://xfire.codehaus.org/config/1.0">
  3. <service>
  4. <name>HelloService</name>
  5. <serviceClass>com.test.service.IHelloService</serviceClass>
  6. <implementationClass>com.test.service.HelloService</implementationClass>
  7. </service>
  8. </beans>

5.将xfire的Jar包和相关依赖包拷到系统应用中,在Tomcat下部署应用。
   启动tomcat后访问服务(需在应用后加上/services,webservice才会进行拦截):
   例:http://localhost:8080/ws2/services。(IE下有时无法显示列表,可用其它浏览器显示或指定接口名称)
   界面如下:

点击后查看详细的wsdl文档,不同的浏览器下访问会有区别,展示效果不一致。

   二.建立XFire客户端进行调用

1.本地客户端调用,与webservice服务在同一应用。

  1. package com.test.client;
  2. import java.net.MalformedURLException;
  3. import org.codehaus.xfire.XFireFactory;
  4. import org.codehaus.xfire.client.XFireProxyFactory;
  5. import org.codehaus.xfire.service.Service;
  6. import org.codehaus.xfire.service.binding.ObjectServiceFactory;
  7. import com.test.service.IHelloService;
  8. import com.test.service.bean.User;
  9. public class ClientTest {
  10. public static void main(String args[]) throws MalformedURLException {
  11. Service service = new ObjectServiceFactory().create(IHelloService.class);
  12. XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
  13. .newInstance().getXFire());
  14. String url = "http://localhost:8080/ws2/services/HelloService";
  15. IHelloService helloService = (IHelloService) factory.create(service,url);
  16. System.out.println(helloService.sayHello("张三"));
  17. User user = new User();
  18. user.setName("张三");
  19. System.out.println(helloService.getUser(user).getName());
  20. }
  21. }

执行结果如下:

  1. Hello, 张三
  2. new:张三

 2. 利用XFire创建build.xml文件生成客户端代码调用webservice服务

  

2.1在src目录下创建build.properties文件,配置如下:

  1. src.dir=${basedir}
  2. lib.dir=D:/myspace/ws2/WebRoot/WEB-INF/lib
  3. wsdl.dir=http\://localhost\:8080/ws2/services/HelloService?wsdl

2.2在src目录下创建build.xml文件,配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="WebService" basedir="." default="gen-webservice">
  3. <property file="build.properties"></property>
  4. <path id="project-classpath">
  5. <fileset dir="${lib.dir}">
  6. <include name="**/*.jar" />
  7. </fileset>
  8. </path>
  9. <target name="gen-webservice">
  10. <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask"
  11. classpathref="project-classpath" />
  12. <wsgen outputDirectory="${src.dir}"  wsdl="${wsdl.dir}"
  13. package="stub.test.client" overwrite="true"/>
  14. </target>
  15. </project>

用ant构建生成代码,生成后的目录如下:

 2.3编写客户端代码进行调用

  1. package com.test.client;
  2. import stub.test.client.HelloServiceClient;
  3. import stub.test.client.HelloServicePortType;
  4. import com.test.service.bean.ObjectFactory;
  5. import com.test.service.bean.User;
  6. public class HelloServiceTest {
  7. public static void main(String args[]){
  8. HelloServiceClient service = new HelloServiceClient();
  9. HelloServicePortType portType = service.getHelloServiceHttpPort();
  10. System.out.println(portType.sayHello("张三"));
  11. ObjectFactory factory = new ObjectFactory();
  12. User user = factory.createUser();
  13. user.setName(factory.createUserName("张三"));
  14. System.out.println(portType.getUser(user).getName().getValue());
  15. }
  16. }

执行结果如下:

    1. Hello, 张三
    2. new:张三

原文:http://linshow26.iteye.com/blog/2004080

XFire WebService demo的更多相关文章

  1. webservice接口示例(spring+xfire+webservice)

      webservice接口示例(spring+xfire+webservice) CreateTime--2018年4月2日17:36:07 Author:Marydon 一.准备工作 1.1 ja ...

  2. android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过

    前两天,公司有一个利用android远程操作sqlserver的项目,对此我是毫无头绪的,但也挺感兴趣的,于是开始上网搜索方法,网上有挺多方法了,发现使用webservice的挺多的,不过我对这些技术 ...

  3. Spring boot+CXF开发WebService Demo

    最近工作中需要用到webservice,而且结合spring boot进行开发,参照了一些网上的资料,配置过程中出现的了一些问题,于是写了这篇博客,记录一下我这次spring boot+cxf开发的w ...

  4. 一个WebService Demo

    1.建立一个Asp.net Web网站,添加新项Web服务MyMath.asmx.编写如下代码: using System; using System.Collections.Generic; usi ...

  5. Postman 测试Xfire webservice

    权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u013177381/article/det ...

  6. WebService初入

    WebService 1. WebService基本认识 WebService最早是微软提出了一种以XML为载体网络信息传输的规范,现在几乎所有的语言与平台都支持,带有状态机制,不依赖于容器,可以发送 ...

  7. iOS网络开发-AFNetworking请求asp.net WebService

    看到园子有位朋友需要使用AFN框架请求 WebService,所以就整理了一下,demo下载链接在底部 编写WebService可以看这篇博客 http://www.cnblogs.com/linmi ...

  8. Spring Boot+CXF搭建WebService(转)

    概述 最近项目用到在Spring boot下搭建WebService服务,对Java语言下的WebService了解甚少,而今抽个时间查阅资料整理下Spring Boot结合CXF打架WebServi ...

  9. springboot 配置webservice接口

    导入依赖的jar <!-- webservice cxf --> <dependency> <groupId>org.apache.cxf</groupId& ...

随机推荐

  1. [luoguP1131] [ZJOI2007]时态同步(贪心)

    传送门 显然是一棵树. 又显然一段一段地增加比较优. 我们可以dfs,并且尽量把每一个节点所有子树中所有节点的时间增加到一样. #include <vector> #include < ...

  2. 刷题总结——蜥蜴(ssoj网络流)

    题目: 题目背景 SCOI2007 DAY1 T3 题目描述 在一个 r 行 c 列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外.每行每列中相邻石柱的距 ...

  3. leetcode 319 灯泡问题

    例子:1-9 1的因子1 2       1,2 3        1,,3 4        1,2,4 5        1,5 6        1,2,3,6 7        1,7 8   ...

  4. HDU 4474 Yet Another Multiple Problem【2012成都regional K题】 【BFS+一个判断技巧】

    Yet Another Multiple Problem Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

  5. 用canal监控binlog并实现mysql定制同步数据的功能

    业务背景 写任何工具都不能脱离实际业务的背景.开始这个项目的时候是因为现有的项目中数据分布太零碎,零零散散的分布在好几个数据库中,没有统一的数据库来收集这些数据.这种情况下想做一个大而全的会员中心系统 ...

  6. mysqldump 把数据库备份到异地的服务器

    原文:http://www.open-open.com/code/view/1420121471484 这个方法可以把通过mysqldump 把本地数据库备份到远端主机, 中间数据的传输通过 ssh ...

  7. Nuxt.js使用mint-ui

    环境 vue nuxt 要使用mint-ui 记录下其中的坑 npm install mint-ui --save plugins目录下 增加 mint-ui.js 代码: import Vue fr ...

  8. 【Todo】一些scala的实验 & 与Java的混合

    另外,如果要支持 java 和 scala混合build,可以看看这篇文章: http://www.cnblogs.com/yjmyzz/p/4694219.html Scala和Java实现Word ...

  9. 更改Tomcat命令行窗体标题

     在windows下启动多个tomcat时.不好区分哪个tomcat相应哪个服务,能够通过下面方法设置Tomcat命令行窗体的标题: 1.在%tomcat_home%\bin\catalina.b ...

  10. [转]gzip,bzip2,tar,zip命令使用方法详解

    原文:http://blog.chinaunix.net/uid-20779720-id-2547669.html 1 gzipgzip(1) 是GNU的压缩程序.它只对单个文件进行压缩.基本用法如下 ...