注意:xfire不支持java.util.List等集合,所以调用webservice传递的参数要为基本类型。

转自:http://zp9245.blog.163.com/blog/static/105941532011995490825/

1.下载需要的xfire包

下载地址:http://xfire.codehaus.org/Download,下载xfire-distribution-1.2.6.zip文件,并解压。
新建web项目,取名TestXFire,将解压目录下的xfire-all-1.2.6.jar和lib目录下的所有包导入到项目中。
 
2.创建类
使用接口的设计是一个好的实践,所以先创建接口:ITestService,代码如下:
package com.gdie.xfire.example;
//该接口提供一个方法,用于计算
public interface ITestService {
public int add(int p1, int p2);
}
创建接口实现类
package com.gdie.xfire.example;
public class TestService implements ITestService {
public int add(int p1, int p2) {
return p1 + p2;
}}
3.创建META-INF文件夹
简便起见,将WebRoot下的META-INF文件夹复制到项目的src下,这样的话会在部署发布目录下web-inf下的classes下自动建立META-INF,而同时WebRoot下也有一个META-INF文件夹,这两个容易混淆,实际webservice下真正起作用的是web-inf下的classes下的web-inf下的META-INF,所以,关键是在项目的src下面有META-INF这个文件夹,并定义里面的内容,与WebRoot下META-INF无关。
然后在src下的META-INF建立xfire子文件夹,里面建立一名叫services.xml配置文件,配置如下: 
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://xfire.codehaus.org/config/1.0"> 
<service> 
   <name>TestService</name> <!--随便命名-->
   <namespace>http://com/gdie/xfire/example/ITestService</namespace> <!--随便命名-->
   <serviceClass>com.gdie.xfire.example.ITestService</serviceClass> <!--接口类-->
   <implementationClass>com.gdie.xfire.example.TestService</implementationClass> <!--实现类-->
</service> 
</beans> 
注意:包文件路径com.gdie.xfire.example.ITestService等需要正确对应。
关键是在src下面要有META-INF文件夹和里面的文件,否则会报找不到services.xml错误而加载不了项目。 
 
4.修改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"> 
    <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> 
       <load-on-startup>0</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
       <servlet-name>XFireServlet</servlet-name> 
       <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 
     <servlet-mapping> 
         <servlet-name>XFireServlet</servlet-name> 
         <url-pattern>/servlet/XFireServlet/*</url-pattern> 
     </servlet-mapping> 
</web-app> 
至此,服务器端部署完毕。完整的项目文件结构如图:

将项目加载进tomcat并启动tomcat,无异常。

打开ie,输入 
http://localhost:8080/TestXFire/services/  (如果这个地址访问不了,那么就写全地址http://localhost:8080/TestXFire/services/ITestService?wsdl
出现

 

表明部署成功,点wsdl可以看见一堆xml代码。

 
5.客户端测试
先将刚才建立的TestXFire整个项目打包成jar包(myeclipse的export),名为TestXFire.jar,再新建一个web项目TestXFireClient,导入xfire的包,和刚才的TestXFire工程的打包TestXFire.jar (这里也可以不用TextXFire.jar这个项目,只需要把接口类《ITestService.java》文件拷到客户端项目中)
 
在src下新建一个测试类,代码如下: 
package com.gdie.xfire.test;
 
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
 
import com.gdie.xfire.example.ITestService;;
 
public class MyClient {
public static void main(String[] args) {
try{
Service serviceModel = new ObjectServiceFactory().create(
ITestService.class,"TestService","http://localhost:8080/TestXFile/services/ITestService?wsdl",null);
ITestService service = (ITestService) new XFireProxyFactory().create(
System.out.println("返回值是:"+service.add(5, 8));
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
运行,输出结果是: 
返回值是:13
则说明客户端成功。

至此,webservice部署测试例子成功。

webservice之XFire的使用(java调用java)的更多相关文章

  1. Web循环监控Java调用 / Java调用.net wcf接口

    背景介紹 (Background Introduction) 目前有一些报表客户抱怨打不开 报表执行过程过长,5.8.10秒甚至更多 不能及时发现和掌握服务器web站点情况 用戶需求(User Req ...

  2. WebService之XFire和SOAP实例(基于JAVA)

    开发环境:jdk1.6 + Tomcat7 + MyEclipse10 源码下载地址张贴在文章最后面:首先是使用WSDL协议实现:这里使用XFire XFire一个免费.开源的SOAP框架,它构建了P ...

  3. (转)Java调用Weservice

    原文地址:http://www.cnblogs.com/jiangxu1989/p/6491483.html https://www.cnblogs.com/neughj/p/5145630.html ...

  4. Java调用WebService方法总结(6)--XFire调用WebService

    XFire是codeHaus组织提供的一个WebService开源框架,目前已被Apache的CXF所取代,已很少有人用了,这里简单记录下其调用WebService使用方法.官网现已不提供下载,可以到 ...

  5. java 调用webservice的各种方法总结

    java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...

  6. c#调用JAVA的Webservice处理XML数据及批量轮询的实现方法

    前段时间做一个调用外单位WEBSERVICE的项目,项目完成的功能其实很简单,就是我们单位有很多车友会员,我们想对他们提供车辆违章信息告之服务!我们这边交警部门给我们开放了WS的接口,我们就是想通过这 ...

  7. Java调用WebService方法总结(7)--CXF调用WebService

    CXF = Celtix + XFire,继承了Celtix和XFire两大开源项目的精华,是一个开源的,全功能的,容易使用的WebService框架.文中所使用到的软件版本:Java 1.8.0_1 ...

  8. Java调用WebService方法总结(1)--准备工作

    WebService是一种跨编程语言.跨操作系统平台的远程调用技术,已存在很多年了,很多接口也都是通过WebService方式来发布的:本系列文章主要介绍Java调用WebService的各种方法,使 ...

  9. 【转】java调用webservice

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

随机推荐

  1. Java求和

    用while结构求0~100的整数数字之和. 代码如下: public class WhileDemo { public static void main(String[] args) { int l ...

  2. python 循环、循环设计、循环对象

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 1.循环 循环用于重复执行一些程序块.从上一讲的选择结构,我们已经看到了如何用缩进 ...

  3. HDU1009

    题意:有n个房子,每个房子里都有老鼠喜欢吃的咖啡豆J[i],但是每个房子都有猫看守,老鼠现在手上有M的猫粮.可以用猫粮换咖啡豆,每只猫都有猫粮的要求F[i].老鼠得到的咖啡豆是J[i]*a%     ...

  4. entityFramework使用 codefirst

    新建项目 用nuget安装entityFramework,Install-Package Entityframework 建一个model和context //[Table("Custome ...

  5. quartz集群调度机制调研及源码分析---转载

    quartz2.2.1集群调度机制调研及源码分析引言quartz集群架构调度器实例化调度过程触发器的获取触发trigger:Job执行过程:总结:附: 引言 quratz是目前最为成熟,使用最广泛的j ...

  6. 7.Knockout.Js(Mapping插件)

    前言 Knockout设计成允许你使用任何JavaScript对象作为view model.必须view model的一些属性是observable的,你可以使用KO绑定他们到你的UI元素上,当这些o ...

  7. LinQ[持续更新]

    var query = from t1_row in eprg.AttestationConditions where t1_row.Attestation.ProviderNumber == pro ...

  8. 硬件相关-ADC原理(未完成)

    一.模数转换的一般步骤: 1)采样和保持 为了把模拟信号转换成对应的数字信号,必须首先将模拟量每隔一定时间抽取一次样值,使时间上连续变化的模拟量变为一个时间上断续变化的模拟量,这个过程称为采样. 为了 ...

  9. Swing做的非阻塞式仿飞秋聊天程序

    采用Swing 布局 NIO非阻塞式仿飞秋聊天程序, 切换皮肤颜色什么的小功能以后慢慢做 启动主程序. 当用户打开主程序后自动获取局域网段IP可以在 设置 --> IP网段过滤, 拥有 JMF ...

  10. JAVA内部类(转)

    源出处:JAVA内部类 在java语言中,有一种类叫做内部类(inner class),也称为嵌入类(nested class),它是定义在其他类的内部.内部类作为其外部类的一个成员,与其他成员一样, ...