作者:ThirdteenDevil 十三妖
qq: 181907667
说明:这个例子可以解决webservice 传递自定义对象
服务器的文件及设置
在web.xml配置xfire的servlet
<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>
建立想要发布程序的接口 IUserService.java
package com.devil13th.xfire; import java.util.List; public interface IUserService { public String msg(String g); public User findUsr(String usrName); public List getAllUsr(); }
注意:getAllUsr返回的类型是List类型,如果是jdk1.4或以下版本要加入下面的文件,放在和发布的接口(IUserService)相同的目录下!文件的命名要和接口一样(接口名.aegis.xml),如果是jdk1.5或以上则使用泛型就可以了 IUserService.aegis.xml:
<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>
建立想要发布程序的接口实现 UserServiceImpl.java
package com.devil13th.xfire; import java.util.ArrayList; import java.util.List; public class UserServiceImpl implements IUserService{ public String msg(String g){ System.out.println(g); return g; }; public User findUsr(String usrName){ User u = new User(); u.setName(usrName); return u; } public List getAllUsr(){ List l = new ArrayList(); for(int i = 0 ; i < 5 ; i++){ User u = new User(); u.setName("name_"+ i); l.add(u); } return l; } }
所需要的User类 User.java
package com.devil13th.xfire; public class User { public String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
建立services.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>userService</name> <namespace>userServiceTest</namespace> <serviceClass> com.devil13th.xfire.IUserService </serviceClass> <implementationClass> com.devil13th.xfire.UserServiceImpl </implementationClass> </service> </beans>
其中 name 是service名称用于后面输入网址访问使用
serviceClass是服务接口的名称
implementationClass是服务接口的实现类
把写好的services.xml放在src/META-INF/xfire目录下,生成到classes目录下。
注意是src下的META-INF,不是webroot下的META-INF
最近有些朋友因使用Spring2.0以上版本时,会发生如下异常:
ERROR - Error initializing XFireServlet. org.springframework.beans.factory.BeanDefinitionStoreException: Unrecognized xbean element mapping: beans in namespace http://xfire.codehaus.org/config/1.0 改成如下形式即可:
<?xml version="1.0" encoding="UTF-8"?> <beans> <service xmlns="http://xfire.codehaus.org/config/1.0"> <name>userService</name> <namespace>userServiceTest</namespace> <serviceClass> com.devil13th.xfire.IUserService </serviceClass> <implementationClass> com.devil13th.xfire.UserServiceImpl </implementationClass> </service> </beans>
测试服务:
把服务打开后在地址栏中输入http://127.0.0.1:8080/xfire/services/userService?wsdl后的结果应该是一个xml就说明搭建成功了。
下面是客户端调用
建立接口 IUserService.java
package com.devil13th.client; import java.util.List; import com.devil13th.xfire.User; public interface IUserService { public String msg(String g); public User findUsr(String usrName); public List getAllUsr(); }
这个接口要和服务端的接口一致
注意:getAllUsr返回的类型是List类型,如果是jdk1.4或以下版本要加入下面的文件,放在和发布的接口(IUserService)相同的目录下!文件的命名要和接口一样(接口名.aegis.xml),如果是jdk1.5或以上则使用泛型就可以了
这个接口和xml文件可以直接拷贝服务器端的接口和xml文件
建立接口使用的bean User.java
package com.devil13th.xfire; public class User { public String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
特别注意:这个bean的名称以及包名一定要和服务器端使用到的bean一样!!!!
客户端调用
package com.devil13th.client; 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.devil13th.xfire.User; public class ClientTest { public static void main(String[] args) { Service serviceModel = new ObjectServiceFactory() .create(IUserService.class); XFireProxyFactory factory = new XFireProxyFactory(XFireFactory .newInstance().getXFire()); String helloWorldURL = "http://127.0.0.1:8080/xfire/services/userService"; try { IUserService ts = (IUserService) factory.create(serviceModel, helloWorldURL); // msg 方法调用 System.out.println(ts.msg("22")); //findUsr 方法调用 User u = ts.findUsr("十三妖"); System.out.println(u.getName()); //getAllUsr 方法调用 List l = ts.getAllUsr(); System.out.println(l.size()); for(int i = 0 , j = l.size(); i < j ; i++){ User ux = (User)l.get(i); System.out.println(ux.getName()); } } catch (Exception e) { System.out.println(e); } } }
一切ok啦 例子在附件中 写的比较详细了就不再做多余的解释了
分享到:
相关推荐
XFire是codeHaus组织提供的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程...
【Web服务基础与XFire简介】 Web服务是一种基于开放标准(如XML,SOAP,WSDL和UDDI)的通信协议,它允许不同系统之间的应用程序相互通信,从而实现跨平台的数据交换。Web服务的核心技术包括:简单对象访问协议...
XFire Webservice是一个基于Java的开源工具,它简化了创建、部署和消费Web服务的过程。在深入探讨这个完整实例之前,我们首先需要了解Web服务的基本概念。Web服务是一种通过网络进行通信的应用程序接口(API)。它们...
**XFire Webservice 上传下载源码详解** XFire 是一款强大的Java Web服务框架,它为开发者提供了构建高质量、高性能的Web服务的工具。在"xfire webservice 上传下载源码"这个主题中,我们将深入探讨如何使用XFire来...
spring集成xfire webservice实现远程调用 将项目发布后,点击http://localhost:8080/SpringWebServiceTest/services/HelloWS?wsdl即可 其中也有客户端的调用,自己试试吧。
标题中的“xfire webservice集成最少8个包”指的是在使用XFire框架开发Web服务时,所需的最小依赖库数量。XFire是早期流行的Java Web服务实现框架,它允许开发者快速创建、部署和消费Web服务。这里提到的8个包可能...
"Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...
在本教程中,我们将深入探讨如何使用Spring和XFire编写Web服务的完整配置,并通过实际案例来学习这一过程。 首先,我们需要了解Spring和XFire的基础。Spring框架提供了一个名为Spring-WS的模块,专门用于构建Web...
XFire Webservice 服务器端是一个专门用于游戏社区的网络服务接口,它允许开发者与XFire游戏客户端进行交互,实现各种功能,如用户登录、好友系统、游戏统计等。在这个压缩包文件中,"WSA"可能代表Web Service ...
grails+Xfire webservice
XFire WebService精简包是针对开发者设计的一款轻量级工具集合,主要用于快速搭建和运行XFire WebService项目。在IT行业中,Web服务是一个关键组件,它允许不同系统和应用程序之间进行数据交换和功能调用,实现...
2. **阅读XFire文档**:官方文档提供了丰富的示例和教程,帮助你快速上手。 3. **动手实践**:通过编写简单的服务和客户端来实践XFire的使用,理论结合实践能加深理解。 4. **调试与测试**:学会使用XFire的测试工具...
**XFire Webservice 客户端详解** XFire Webservice 客户端是一款专为连接XFire游戏平台的网络服务而设计的应用程序。XFire是一个已停运的在线游戏社区,它允许玩家与朋友交流、追踪游戏状态以及分享游戏成就。尽管...
Xfire Webservice是一个基于Java平台的服务框架,它允许开发者创建和使用Web服务。这个框架的主要目的是简化Web服务的开发过程,使开发人员可以快速地构建分布式应用程序。在本例中,我们将探讨Xfire Webservice与...
这篇博客“Java使用XFire调用WebService接口”显然是讨论如何利用XFire这个开源框架来与Web服务交互。 XFire是Apache CXF项目的前身,它提供了一种简单的方式来创建和消费SOAP Web服务。XFire的强项在于其轻量级和...
**XFIRE Webservice 开发实例详解** 在信息技术领域,Webservice是一种基于互联网的、平台无关的交互方式,它允许不同的应用程序之间进行数据交换和功能共享。而XFIRE是一款专为游戏社区设计的软件,它提供了丰富的...
xfire webservice 集成spring客户端封装成到一个类打包到客户端就像调静态方法一样
xfire简单实例发布webservice,引用到2个jar包的简单例子