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. MHA的介绍和测试(一)

    MHA的介绍 MySQL的MHA:MySQL的高级可用性管理器和工具MHA的主要目标是在短(通常为10-30秒)的停机时间内自动化主故障转移和slave升级,不受复制一致性问题的困扰,不需要花费大量的 ...

  2. 【霍夫曼树】 poj 1521 Entropy

    poj.org/problem?id=1521 注意只有特殊情况:只有一种字母 #include<iostream> #include<cstdio> #include< ...

  3. hdu4035 Maze (树上dp求期望)

    dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 ...

  4. Linux(12):期中架构(4)--- 前端部分:HTTP & Nginx & LNMP架构

    HTTP协议概念原理说明 1. 当用户访问一个网站时经历的过程 # ①. 利用DNS服务,将输入的域名解析为相应的IP地址 a 本地主机输入域名后,会查询本地缓存信息和本地hosts b 本地主机会向 ...

  5. ElasticSearch API 之 DELETE

    删除API,可以根据特定的ID删除文档. $ curl -XDELETE 'http://localhost:9200/website/blog/AVbkih8AltSLRRB7XAun' 会返回下面 ...

  6. *Codeforces963C. Cutting Rectangle

    $n \leq 200000$种互不相同的矩形,给长宽和数量,都$\leq 1e12$,问有多少种大矩形只沿平行长和宽切正好切成这些矩形. 首先可以发现在一个合法情况下,有些矩形的位置是可以乱挪的,比 ...

  7. linux磁盘I/O的性能评估

    linux磁盘I/O的性能评估 参考自:自学it网,http://www.zixue.it/. (1)使用iostat命令. [test@localhost /]$ iostat -d Linux - ...

  8. 每日记录 2016-4-29 HTML5本地存储

    HTML5本地存储 一.HTML5 localStorage 在HTML5中,本地存储是一个window的属性,包括localStorage和 sessionStorage,从名字应该可以很清楚的辨认 ...

  9. luogu P1260 工程规划

    题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000).由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,…,Tn并不是 ...

  10. Codeforces 961 E Tufurama

    Discription One day Polycarp decided to rewatch his absolute favourite episode of well-known TV seri ...