XFire WebService demo
XFire创建WebService实例应用
XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,
XFire的配置非常简单,可以非常容易地和Spring集成。
下载地址:http://xfire.codehaus.org/Download。
一. 使用XFire发布WebService
1. 创建service接口
- package com.test.service;
- import com.test.service.bean.User;
- public interface IHelloService {
- public String sayHello(String name);
- public User getUser(User user);
- }
- }
2.创建Service接口的实现类
- package com.test.service;
- import com.test.service.bean.User;
- public class HelloService implements IHelloService{
- public String sayHello(String name){
- return "Hello, "+name;
- }
- public User getUser(User user) {
- User userNew = new User();
- userNew.setId("new:"+user.getId());
- userNew.setName("new:"+user.getName());
- return userNew;
- }
- }
- package com.test.service.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;
- }
- }
3.在web.xml文件中进行XFire拦截配置,可参照官网提供的sample。
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.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>
- </web-app>
4.在class目录下建立META-INF目录,如(META-INF>xifre->services.xml),
在services.xml文件中进行webservice服务的发布,可参照官网提供的sample。
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://xfire.codehaus.org/config/1.0">
- <service>
- <name>HelloService</name>
- <serviceClass>com.test.service.IHelloService</serviceClass>
- <implementationClass>com.test.service.HelloService</implementationClass>
- </service>
- </beans>
5.将xfire的Jar包和相关依赖包拷到系统应用中,在Tomcat下部署应用。
启动tomcat后访问服务(需在应用后加上/services,webservice才会进行拦截):
例:http://localhost:8080/ws2/services。(IE下有时无法显示列表,可用其它浏览器显示或指定接口名称)
界面如下:

点击后查看详细的wsdl文档,不同的浏览器下访问会有区别,展示效果不一致。
二.建立XFire客户端进行调用
1.本地客户端调用,与webservice服务在同一应用。
- package com.test.client;
- 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.test.service.IHelloService;
- import com.test.service.bean.User;
- public class ClientTest {
- 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/ws2/services/HelloService";
- IHelloService helloService = (IHelloService) factory.create(service,url);
- System.out.println(helloService.sayHello("张三"));
- User user = new User();
- user.setName("张三");
- System.out.println(helloService.getUser(user).getName());
- }
- }
执行结果如下:
- Hello, 张三
- new:张三
2. 利用XFire创建build.xml文件生成客户端代码调用webservice服务
2.1在src目录下创建build.properties文件,配置如下:
- src.dir=${basedir}
- lib.dir=D:/myspace/ws2/WebRoot/WEB-INF/lib
- wsdl.dir=http\://localhost\:8080/ws2/services/HelloService?wsdl
2.2在src目录下创建build.xml文件,配置如下:
- <?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="stub.test.client" overwrite="true"/>
- </target>
- </project>
用ant构建生成代码,生成后的目录如下:

2.3编写客户端代码进行调用
- package com.test.client;
- import stub.test.client.HelloServiceClient;
- import stub.test.client.HelloServicePortType;
- import com.test.service.bean.ObjectFactory;
- import com.test.service.bean.User;
- public class HelloServiceTest {
- 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.getUser(user).getName().getValue());
- }
- }
执行结果如下:
- Hello, 张三
- new:张三
原文:http://linshow26.iteye.com/blog/2004080
XFire WebService demo的更多相关文章
- webservice接口示例(spring+xfire+webservice)
webservice接口示例(spring+xfire+webservice) CreateTime--2018年4月2日17:36:07 Author:Marydon 一.准备工作 1.1 ja ...
- android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过
前两天,公司有一个利用android远程操作sqlserver的项目,对此我是毫无头绪的,但也挺感兴趣的,于是开始上网搜索方法,网上有挺多方法了,发现使用webservice的挺多的,不过我对这些技术 ...
- Spring boot+CXF开发WebService Demo
最近工作中需要用到webservice,而且结合spring boot进行开发,参照了一些网上的资料,配置过程中出现的了一些问题,于是写了这篇博客,记录一下我这次spring boot+cxf开发的w ...
- 一个WebService Demo
1.建立一个Asp.net Web网站,添加新项Web服务MyMath.asmx.编写如下代码: using System; using System.Collections.Generic; usi ...
- Postman 测试Xfire webservice
权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u013177381/article/det ...
- WebService初入
WebService 1. WebService基本认识 WebService最早是微软提出了一种以XML为载体网络信息传输的规范,现在几乎所有的语言与平台都支持,带有状态机制,不依赖于容器,可以发送 ...
- iOS网络开发-AFNetworking请求asp.net WebService
看到园子有位朋友需要使用AFN框架请求 WebService,所以就整理了一下,demo下载链接在底部 编写WebService可以看这篇博客 http://www.cnblogs.com/linmi ...
- Spring Boot+CXF搭建WebService(转)
概述 最近项目用到在Spring boot下搭建WebService服务,对Java语言下的WebService了解甚少,而今抽个时间查阅资料整理下Spring Boot结合CXF打架WebServi ...
- springboot 配置webservice接口
导入依赖的jar <!-- webservice cxf --> <dependency> <groupId>org.apache.cxf</groupId& ...
随机推荐
- 开源中国+soucetree
参考链接:http://www.cocoachina.com/programmer/20151012/13682.html 1.创建一个工程
- 虚拟机安装centos6.5
最近想搞一下代码覆盖率的jacoco,需要在linux环境下部署一套jenkins.故需要装一个centos的虚拟机. 一.安装虚拟机. 下载后安装一个虚拟机,我选择的是VMware虚拟机 二.安装c ...
- BZOJ 2179 FFT快速傅立叶 ——FFT
[题目分析] 快速傅里叶变换用于高精度乘法. 其实本质就是循环卷积的计算,也就是多项式的乘法. 两次蝴蝶变换. 二进制取反化递归为迭代. 单位根的巧妙取值,是的复杂度成为了nlogn 范德蒙矩阵计算逆 ...
- 【数位DP】HDU 6156 Palindrome Function
http://acm.hdu.edu.cn/showproblem.php?pid=6156 [AC] #include<bits/stdc++.h> using namespace st ...
- NVMe与SCM结合将赋予存储介质的能力
转自:SCM是什么鬼,NVMe与其结合将赋予存储介质哪些能力? 全SSD闪存阵列在企业级存储得到广泛应用,相比传统机械硬盘,它的延迟.性能和可靠性都有了显著提高.许多早期开发商抓住其闪存技术优势的机遇 ...
- cf3D Least Cost Bracket Sequence
This is yet another problem on regular bracket sequences. A bracket sequence is called regular, if b ...
- [BOI2007] Sequence
题目描述 对于一个给定的序列a1, …, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列.这一 ...
- Maven的相关问题(一)——settings.xml配置详解
工作中第一次正式接触maven,虽然之前在学习时有遇到过,但是对于maven的认识和理解确实太浅薄,仅仅局限于机械式的操,纸上得来终觉浅,绝知此事要躬行···古人诚不欺我也~ 下面先贴一个找到的一个非 ...
- htmlcxx取指定字段实例
#include <string> #include <iostream> #include <sstream> #include <htmlcxx/html ...
- 基于centos 创建stress镜像——源码安装stress
上一篇文章进行了yum安装stress,这次对stress进行源码编译安装,并且生成新的镜像 创建Dockerfile目录 [vagrant@localhost ~]$ mkdir -p /tmp/s ...