使用xfire发布WebService

xfire发布webservice服务 NULL 博文链接:https://xuyuanshuaaa.iteye.com/blog/1138220 立即下载

1. 下载xfire-all.jar(可以去这里http://repository.codehaus.org/org/codehaus/xfire/下载)和其依赖包,放到classpath下。 

2. 新建一个工程HelloWebService(我用的是MyEclipse6.0+Tomcat5.5,注意尽量不要用MyEclipse自带的“创建WebService工程”功能)。 
3. 创建一个Interface ,名称是IHelloService,其内容如下: 
        package com.lawrenst.service; 

        public interface IHelloService{ 

       public String sayHello(String name); 

        } 
    并创建其实现类,HelloServiceImpl,内容如下, 
        package com.lawrenst.service; 

        public class HelloServiceImplimplements IHelloService{ 

        public String sayHello(String name) { 
     return "Hello "+name; 
        } 
        } 
    由于代码比较简单,就不写注释了。 

4.  在src下建立一个文件夹,META-INF(注意大小写),在META-INF下建立一个xfire文件夹,在xfire中建立services.xml文件。(真啰嗦),其内容如下: 
<beans xmlns="http://xfire.codehaus.org/config/1.0"> 
<service> 
<name>HelloService</name> 
                <!-- 
<namespace> 
http://oe-way.com/BookService 
</namespace> 
--> 
               <!-- 接口--> 
               <serviceClass>com.lawrenst.service.IHelloService</serviceClass> 

               <!--  接口的实现类--> 
               <implementationClass> 
test.risesoft.BookServiceImpl 
</implementationClass> 

                <properties> 
<property key="mtom-enabled">true</property> 
</properties> 

<style>wrapped</style> 
<use>literal</use> 
<scope>application</scope> 
</service> 
</beans> 

5. 在web.xml中配置上xfire 
      <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>/services/*</url-pattern> 
</servlet-mapping> 

6.   访问 http://localhost:8080/HelloWebService/services/HelloService?wsdl 
     好了页面出现了,至此,你的第一个WebService发布成功了。 
7.   编写客户端程序 
     在这里,我介绍两种方式,第一种是纯POJO方式,第二种是动态方式 
     第一种:纯POJO方式 
     package com.lawrenst.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.lawrenst.service.IHelloService; 

     public class TestClient { 

public static void main(String args[]) 
{ 
Service serviceModel=new ObjectServiceFactory().create(IHelloService.class); 
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire()); 
String url="http://localhost:8080/HelloWebService/services/HelloService"; 
try { 
IHelloService service=(IHelloService) factory.create(serviceModel, url); 

//测试sayHello方法 
System.out.println(service.sayHello("lawrenst")); 
} catch (MalformedURLException e) { 
e.printStackTrace(); 
} 
} 

} 
ok,看看你的控制台,是不是出现了预期的东西。 

  第二种:动态方式(动态模式不需要服务端的class,不过性能和复杂对象映射等估计做得不会太好。) 
Client client = new Client(new URL 
          ("http://localhost;8080/HelloWebService/services/HelloService?WSDL")); 

Object[] results = client.invoke("sayHello", new Object[] {"lawrenst"}); 
System.out.println(results[0]); 

  ok,到此,一切正常,结束。 


上面内容写了简单的操作基本类型的应用,这次写的是复杂类型的,包括返回值是List ,Map,以及自定义对象等。 

1.  在上面所建立的工程基础上,修改IHelloService,增加两个方法: 
public Course choose(Student student); 
public List  test(List temp); 

同时修改其实现类HelloService,内容如下: 
public Course choose(Student student) { 
System.out.println(student.getName()); 

Course course=new Course(); 
course.setCourseName("Computer Science"); 

return course; 
} 

public List test(List temp) { 

for(int i=0;i<temp.size();i++) 
{ 
System.out.println(temp.get(i)); 
} 

List temp2=new ArrayList(); 

Course course1=new Course(); 
course1.setCourseName("English"); 
temp2.add(course1); 

Course course2=new Course(); 
course2.setCourseName("Art"); 
temp2.add(course2); 

return temp2; 
} 

2.  建立两个类,内容分别如下: 
package com.lawrenst.pojo; 

public class Course { 

private String courseName; 

public String getCourseName() { 
return courseName; 
} 

public void setCourseName(String courseName) { 
this.courseName = courseName; 
} 

} 

package com.lawrenst.pojo; 

public class Student{ 

private String name; 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

} 

代码很简单吧,不用我解释吧? 

3.  启动服务器,并访问wsdl文件,出现了什么?出现了异常,大概是什么什么为空。 

xfire默认是Aegis绑定,需要建立一个XXX.aegis.xml文件,让xfire知道test方法中的参数和返回对象是什么类型的。 

建立IHelloService.aegis.xml,注意,必须是和接口名称相同,并且和IHelloService在相同目录下。内容如下: 
<?xml version="1.0" encoding="UTF-8"?> 
<mappings> 
    <mapping> 
        <method name="test"> 
            <parameter componentType="java.lang.String" /> 
            <return-type componentType="com.lawrenst.pojo.Course" /> 
        </method> 
    </mapping> 
</mappings> 

好了,重启服务器,wsdl文件能够正常显示了。 

4.  同样建立客户端(这里我使用的是纯POJO方式,动态方式我没有找到解决的办法,如果哪位高手找到了解决的办法,可以给我留言) 

package com.lawrenst.test; 

import java.net.MalformedURLException; 
import java.util.ArrayList; 
import java.util.List; 

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.lawrenst.pojo.Course; 
import com.lawrenst.pojo.Student; 
import com.lawrenst.service.IHelloService; 

public class TestClient { 

public static void main(String args[]) 
{ 
Service serviceModel=new ObjectServiceFactory().create(IHelloService.class); 
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory. 
newInstance().getXFire()); 
String url="http://localhost:8080/Xfire/services/HelloService"; 

try { 
IHelloService service=(IHelloService) factory.create(serviceModel, url); 

//测试sayHello方法 
System.out.println(service.sayHello("lawrenst")); 

//测试choose方法 
Student student=new Student (); 
student.setName("jijingping"); 
Course course=service.choose(student); 
System.out.println(course.getCourseName()); 

//测试test方法 
List temp=new ArrayList();//给test方法传递的参数 
temp.add("wangxiaosen"); 
temp.add("wangxinlei"); 
temp.add("wangye"); 
List t=service.test(temp); 

for(int i=0;i<t.size();i++) 
{ 
Course c=t.get(i); 
System.out.println(c.getCourseName()); 
} 

} catch (MalformedURLException e) { 
e.printStackTrace(); 
} 
} 

} 

好了 再次成功了,看看服务器端和客户端是不是打印出了相应的东西?

xfire发布webservice 运用xfire框架,与Spring集成发布webservice服务,压缩包已包含所需的jar包等各种文件,也已编写客户端进行测试,下载导入即可启动运行,有问题的欢迎咨询哈 立即下载

相关推荐

ISO 15118-20标准深度解读【精简篇】

ISO 15118-2 是开创者,它解决了“如何让电动汽车充电像给手机充电一样简单(即插即用且自动付费)”的问题,为行业奠定了基础。 ISO 15118-20 是革新者,它站在前者的肩膀上,回答了一个更宏大的问题:“如何让电动汽车深度融入未来的能源系统和智慧城市?” 它不仅是充电协议,更是一个车网互动的综合能源管理协议。简单来说,ISO 15118-2 是关于“如何充电”,而 ISO 15118-20 是关于“如何智慧地使用和管理电动汽车这块大电池”。

网络安全的研究者、新能源行业的追求者 1934

xfire所需的包

错误:java.lang.NoSuchMethodError: javax.xml.namespace.QName.(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Stringjavax.xml.namespace.QName的方法定义太旧,用xfile的lib里面的stax-api-1.0.1.jar和stax-utils-20040917.jar

黑土的Blog 5461

基于Yolo11的无人机小目标检测系统的设计与性能优化改进项目实现

该项目旨在开发一个基于YOLO11的无人机目标检测系统,能够实时识别并定位无人机拍摄过程中捕捉的小目标。考虑到无人机拍摄的目标通常较小,系统将采用特定的调优策略,以提高小目标的检测精度和召回率。

m0_73723097的博客 1205

Spring+xfire 整合

花了一天的时间终于搞定了,总结一下:  1,下载xfire包,去官网下载即可  2,导入相关jar包  3,在web.xml增加配置:         xfire    org.codehaus.xfire.spring.XFireSpringServlet     0                       xfire           /servlet/XFireSer

rain_zhou的专栏 844

iOS Certificates, Identifiers & Profiles简介

1. Certificates Certificates是生成开发和生产所需的证书。 2.1 certSigningRequest文件 生成证书前,需要先生成certSigningRequest文件,certSigningRequest文件由【钥匙串访问】生成。 选择菜单【钥匙串访问】,【证书助理】下的【从证书颁发机构请求证书…】 填写【用户电子邮件地址: 】,将【请求是:】的选项改为【储存到磁盘】 输入certSigningRequest文件的文件名,并指定保存位置。 保存certSignin

假装你是大灰狼的专栏 7060

30天入门 SAP BTP 开发系列之八:动手在 SAP BTP 上开发第一个 ABAP 透明表

ABAP Cloud 环境下创建透明表的方法与数据迁移实践 本文介绍了在 SAP BTP ABAP 环境中创建透明表并迁移数据的完整流程。与传统的 SE11 事务码不同,ABAP Cloud 需通过 ABAP Development Tool 创建数据库表,使用代码定义表结构。作者详细演示了如何: 在开发包中创建名为 Z优快云_TRAVEL 的透明表 使用 ABAP 代码定义表字段和约束 通过 ABAP 类实现数据从标准表/DMO/TRAVEL 到新建表的迁移 验证数据迁移结果 文中还提供了相关技术概念的

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1789

老兄,快来一起过春天!(八)

Spring集成Xfire 用XFire 打造webServices 一:下载XFire1.26官网地址:http://xfire.codehaus.org/Download下载 xfire-distribution-1.2.6.zip 与 xfire-all-1.2.6.jar 包,如单独下载jar包,会发生譬如找不到Spring依赖或Ant依赖等少包问题,因此最好把依赖ja

552

【OS】AUTOSAR OS系统调用产生Trap的过程详解

AUTOSAR OS系统调用产生Trap的过程详解

qq_36056498的博客 2441

使用XFire发布和调用web服务

XFire 是 codeHaus 组织提供个开源框架它构建了 POJO 和 SOA 的间桥梁主要特性就是支持将 POJO 通过非常简单方式发布成 Web 服务这种处理方式不仅充分发挥了 POJO 作用简化了 Java 应用转化为 Web 服务步骤和过程也直接降低了 SOA 实现难度为企业转向 SOA 架构提供了种简单可行方式      XFire 目前最新版本是 1.2.6目前支持特性主要包括

cqrf2006的专栏 1152

学Simulink——基于扩展卡尔曼滤波(EKF)的列车牵引电机转子温度在线估计仿真

本文介绍了一种基于扩展卡尔曼滤波(EKF)的列车牵引电机转子温度在线估计方法,通过Simulink建模实现。文章首先阐述了EKF在估计电机转子温度中的优势,即利用易测量信号(如电流、电压、转速)在线估计难以直接测量的转子温度,并分析了温升对电机性能的影响。随后详细讲解了电机热电增广模型的构建,包括定子电阻温度关系、一阶热近似模型和PMSM的dq轴方程。接着,文章提供了Simulink建模的详细步骤,包括PMSM+FOC电流环的搭建、EKF算法的实现(推荐使用ExtendedKalmanFilter块或MAT

xiaoheshang_123的博客 58

Agisoft Metashape 基于RTK技术的无人机航测免像控技术流程

利用无人机进行航空摄影测量,其使用方便、快速获得成果,已经是测绘行业外业生产的主要方式。RTK定位系统的出现,其厘米级的定位系统,使得航测无人机在作业时,能够准确获取拍照时的GPS位置,能够大量减少像控点,即使不使用像控点也能满足规范对精度的要求。可以有效解决特殊地形(如山川、峡谷、河流、沼泽、水库等)外业人员很难布设像控点的情况。

penglu366366的博客 2189

xfire webService发布以及客户端调用(带验证头)

一、先来说webservice服务端 结构图如下: 1.添加jar包(放入WEB_INF下的lib目录)(如图) 2.编写一个需要发布的接口(IHelloWebService)package com.webservice;import javax.jws.WebService;@WebService public interface IHelloWebService {

MyfishCake的博客 2693

《网络安全自学教程》- Windows基线检查加固

Windows安全配置,基线检查标准,基线加固方式

wangyuxiang946的博客 1万+

idea使用xfire方式发布webservice教程

近日在熟悉webservice发布的过程,此处主要讲解xfire方式。 1.使用idea新建一个web项目 步骤1: 按照图中的指定序号建立对应的web项目即可。 步骤2: 填写组织ID和具体项目id,点击进行“下一步”即可。 步骤3: 设置相关参数,例如maven所在的位置,可以选择idea集成的或者选择自己下载使用的,下方参数的地方根据需要进行设置,点击“下一步”即可,最后一次点击完成即可。 2.建立项目后,如果前面的参数未设置,需要进行单独的设置,例如生成的项目为: 即圈里面的内容没有相应的目

weixin_40471414的博客 1571

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Webservice使用xfire发布及客户端调用

这几天研究了一下WebService的发布及调用,没做之前觉得挺难得,还好项目中有这样的实例自己学着做了一个使用Xfire发布并在另一个项目中调用,感觉做成了还是挺有成就感的,下面记录下实现的步骤有需要的同学可以试一下,也为自己以后使用留个备份。 第一步:先建立一个发布WebService的项目(项目使用SpringMvc架构搭建一个环境): 项目目录结构如下图所示       主要使

起床困难户的博客 4211

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

(2)使用XFire方式发布WebService实例说明

(1)导入所需jar包      相对来讲,使用XFire发布webService是一种比较简单的方式。      首先,访问地址http://xfire.codehaus.org/Download,下载所需的jar包。 新建web项目webServiceXfire,向系统中添加之前下载的文件所包含的jar包。其中包括xfire-all-1.2.6.jar及lib文件夹中所包含的jar...

李振的博客 381

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

使用xfire发布WebService(一)

[size=large][color=red]本Blog所有内容不得随意转载,版权属于作者所有。如需转载请注明出处。[/color][/size] [size=medium]第一次亲手写博客,希望大家多踩,多拍砖。[/size] 最近要做一个WebService的项目,在网上查了查资料,决定使用xfire框架,看了几天书,打算在这里写出一个例子,内容包括基础类型和对象类型。(算是一个总...

lawrenst的专栏 125

使用xfire发布webService

1.xfire服务器配置   1.1  web.xml    &lt;servlet&gt; &lt;servlet-name&gt;xfire&lt;/servlet-name&gt; &lt;servlet-class&gt;org.codehaus.xfire.spring.XFireSpringServlet&lt;/servlet-class&gt; &lt;/servlet&g...

程序猿学社的博客 1288

使用 xfire 快速发布 WebService

 在经历过早年 Delphi, C++, Java 等不成熟环境中开发 WebService 的折磨之后,接触 ASP.NET 的最大感触,就是 WebService 的开发门槛被大大降低了。无需对 SOAP 或基本架构有任何了解,仅需简单的定义几个 Attribute 即可,所有的 dirty work 都由 ASP.NET 在后台自动完成。例如:

xymyeah 2389

使用XFire发布webservice配置

1. 下载xfire-all.jar和其依赖包,放到classpath下。 2. 新建一个工程HelloWebService,并创建一个webservice包,在webservice下再新建一个service包。 3.在service包中创建一个Interface ,名称是IHelloService,其内容如下:  package webservice.service; pub

学の夢的专栏 817

xfire使用注解的方式发布webService

例子环境:spring + hibernate + xfire 1.在 spring的配置文件中加入如下代码 2. 在要发布的类的接口上添加 @WebService(targetNamespace="XXXXX.xxxxxx.xxxxx") targetNamespace 表示服务的命名空间 3.在接口实现类上加注

山峰在前方 1678

Java WebService _CXF、Xfire、AXIS2、AXIS1_四种发布方式(使用整理)

目录 1. CXF方式2. Xfire方式3. AXIS2方式4. AXIS1方式5. AXIS1客户端调用6. AXIS2客户端调用7. CXF客户端调用8. Web Service Client客户端调用 1.CXF方式   CXF与spring搭建webservice是目前最流行的方式,但是传闻cxf与jdk1.5有些不兼容,我没有遇到过,我遇到的问题是cxf与was6...

weixin_30955341的博客 709

用XFire发布WebService

WebService的概念就不多说了,直接进入主题:如何用XFire发布WebService。比较流行的发布WebService的框架有XFire、CXF、AXIS等等。到目前为止接触过的有XFire和CXF,所以想写个例子,以备以后不时之需。 要使用XFire,首先需要去下载XFire的Jar包,然后新建一个Web工程,将XFire的jar包放在lib目录中,全部引入。在web.xml文件...

正走向大牛的菜鸟 646
上一篇: Apache axis2 + Eclipse 开发 WebService
下一篇: iframe 上下滚动条如何默认在下方
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值