`

Web Service中的XFire 传输List、Map 自定义对象

阅读更多

简单记录XFire中怎么传输对象的实现,以备查阅;又不正确的地方请看官们指正!

 

1、先来看看我们的Interface

package com.wy;

import java.util.List;

/**
 * 服务端接口;
 * @author Administrator
 *
 */
public interface IPerson {
	public String example(String message);
	public abstract List<Person> getPersonList();  
    public abstract List<Person> setPersonList(List<Person> personList);  
    public abstract Person getPersonObj(); 
}

 

 

这其中包含了简单对象的传递,对象的传递,List的传递。

 

2、实现接口和业务逻辑

    

package com.wy;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PersonImpl implements IPerson, Serializable {

	private static final long serialVersionUID = 1L;
    
	public String example(String message) {
		return "你好,"+message;
	}
	
	public List<Person> getPersonList() {
		List<Person> list = new ArrayList<Person>();
		Person person = new Person();
		person.setAge(22);
		person.setName("Wang");
		person.setSex("Boy");
		list.add(person);
		Person person2 = new Person();
		person2.setAge(19);
		person2.setName("Sun");
		person2.setSex("Girl");
		list.add(person2);
		return list;
	}

	public List<Person> setPersonList(List<Person> personList) {
		return personList;
	}

	public Person getPersonObj() {
		Person person = new Person();
		person.setAge(22);
		person.setName("ZengPing");
		person.setSex("Girl");
		Map<Integer, String> map = new HashMap<Integer, String>();
		map.put(1, "HuFang");
		map.put(2, "DuanYouYu");
		map.put(3, "TianWei");
		List<String> list = new ArrayList<String>();
		list.add("List1");
		list.add("List2");
		list.add("List3");
		person.setList(list);
		person.setMap(map);
		return person;
	}

}

 

  用到的Person,必须实现Serializable,才能够传输.否则会找不到,对应的文件, 从服务器返回过来的数据会为null;

 

 

package com.wy;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * Entry
 * @author Administrator
 *
 */
public class Person implements Serializable{
	
	private static final long serialVersionUID = 1L;
	private String name;
	private int age;
	private String sex;
	private List<String> list;
	private Map<Integer, String> map;

	public Person() {
	}

	public Person(String name, int age, String sex,List<String> list,Map<Integer, String> map) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.list = list;
		this.map = map;
	}

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public List<String> getList() {
		// TODO Auto-generated method stub
		return list;
	}

	public void setList(List<String> list) {
		// TODO Auto-generated method stub
		this.list = list;
	}

	public void setMap(Map<Integer, String> map) {
		// TODO Auto-generated method stub
		this.map = map;
	}

	public Map<Integer, String> getMap() {
		// TODO Auto-generated method stub
		return map;
	}

}

 

 

3、在src/META-INF/xfire/services.xml,编译时会自动编译到classes的相应目录下面

    

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
	
	<service>
		<name>PersonService</name>
		<serviceClass>com.wy.IPerson</serviceClass>
		<implementationClass>
			com.wy.PersonImpl
		</implementationClass>
		<scope>request</scope>
	</service>
</beans>

 

 

4、因为用到了List、Map等集合类型,所以需要定义Mapping关系,文件名为:src/test/IPerson.aegis.xml

    

<?xml version="1.0" encoding="UTF-8"?>
<mappings>
	<mapping>
		<method name="getList">
			<parameter index="0" componentType="java.lang.String" />
			<return-type componentType="com.wy.Person" />
		</method>
	</mapping>
	
	<mapping>
		<method name="getMap">
			<parameter index="0" componentType="java.lang.String" />
			<return-type componentType="com.wy.Person" />
		</method>
	</mapping>
</mappings>

 

   注意,此文件一定要放到与IHelloService.java相同的目录下面,否则会出错。

 

  5、在Web.xml中配置XFire需要用到的Servlet

     

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<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>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

 

此时Web Service的服务端就开发完成了。

 

现在来看看客户端的代码吧

 

package com.wy;

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

import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

public class Client {
	/**
	 * 主方法;
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String url = "http://localhost:8080/WebServiceXFire/services/PersonService";
		Service serviceModel = new ObjectServiceFactory().create(IPerson.class);
		try {
			IPerson person = (IPerson) new XFireProxyFactory().create(
					serviceModel, url);
			//
			System.out.println(person.example("WebService!"));
			System.out.println("-----------------1------------------");
			List<Person> list = person.getPersonList();
			// 输出Person list集合;
			for (Person per : list) {
				System.out.println(per.getName() + "," + per.getAge() + ","
						+ per.getSex());
			}
			System.out.println("-----------------2------------------");
			List<Person> list2 = new ArrayList<Person>();
			Person person2 = new Person();
			person2.setAge(20);
			person2.setName("Test");
			person2.setSex("Girl");
			list2.add(person2);
			
			// 设置Person list集合;
			List<Person> personList2 = person.setPersonList(list2);
			// 输出从服务器端返回的集合数据;
			for (Person per : personList2) {
				System.out.println(per.getName() + "," + per.getAge()
						+ "," + per.getSex());
			}
			System.out.println("-----------------3------------------");
			// 调用服务器端的单个对象;
			Person person3 = person.getPersonObj();
			System.out.println(person3.getName() + ","
					+ person3.getAge() + "," + person3.getSex());
			System.out.println("-----------------4------------------");
			System.out.println("\n服务器端返回的List集合");
			List<String> list3 = person3.getList();
			for (String str : list3) {
				System.out.println(str);
			}
			System.out.println("------------------5-----------------");
			Map<Integer, String> map = person3.getMap();
			System.out.println("\n服务器端返回的Map集合");
			for (Iterator<Integer> iterator = map.keySet().iterator(); iterator
					.hasNext();) {
				int resultKey = iterator.next();
				String resultValue = map.get(resultKey);
				System.out.println(resultKey + "," + resultValue);
			}
			System.out.println("-------------------6----------------");
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

 

  

 

分享到:
评论
1 楼 性格不定向 2013-10-14  
楼主  我把你的代码都复制了下来  运行 都是null

相关推荐

    Web Service框架xfire与spring集成开发流程

    由于XFire与Spring框架的深度融合,使得开发者能够更加便利地在Spring环境中构建Web Service应用,这正是XFire在开源社区受到追捧的原因。 在XFire与Spring集成开发的过程中,主要分为以下几个步骤: 1. **配置web...

    Web Service 之 XFire入门

    在“Web Service 之 XFire入门”这篇文章中,博主可能还会分享如何通过实例代码来演示这些步骤,例如创建一个名为“helloworld”的简单服务,这个服务可能只有一个返回“Hello, World!”的函数。这样的例子有助于...

    web service xfire 开发包及api

    Xfire Web Service是Xfire提供的一种API,允许开发者集成Xfire的功能到自己的应用或网站中。 Xfire-1.2.6开发包包含了与Xfire Web Service交互所需的所有组件,这包括但不限于SDK文档、示例代码、库文件以及可能的...

    web service (xfire)

    XFire是Apache CXF的前身,它简化了Web服务开发过程,提供了多种API和工具,包括JAXB(Java Architecture for XML Binding)用于对象到XML的转换,以及Aegis,一个用于将Java类直接映射为SOAP消息的库。XFire支持...

    Web Service之XFire

    在XFire中创建一个Web Service实例,首先需要定义一个Java接口或类,该接口或类代表要暴露的服务。接着,使用XFire的API或注解来标记这个接口或类,声明它是一个Web服务。然后,通过XFire的ServerFactoryBean创建并...

    Web Service XFire框架开发指南

    **Web Service XFire框架开发指南** Web Service是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行交互。XFire是Java平台上的一个开源Web Service框架,它提供了一种简单...

    Java web Service 引擎 Xfire 图文教程.docx

    Java Web Service引擎Xfire是一个用于构建和消费Web服务的开源框架,它简化了在Java平台上创建和使用Web服务的过程。这个图文教程将指导你如何使用Xfire来实现一个简单的Web服务。 首先,你需要在你的Web项目中添加...

    使用XFire+Spring构建Web Service

    【使用XFire+Spring构建Web Service】是一种高效且灵活的方法,尤其适合于那些希望利用Spring框架的优秀特性来开发Web Service应用的开发者。XFire是一个先进的Web Service框架,与Axis2并列为新一代的选择,因其...

    xfire开发Web Service接口详解

    在"xfire开发Web Service接口第一个程序"这个文件中,你可能会找到一个简单的示例,展示如何创建一个计算两个数相加的Web Service。这个例子可能包括定义服务接口、实现接口、配置服务以及启动服务的步骤。通过分析...

    xfire实现Web Service

    在Java开发中,XFire是一个流行的框架,用于实现Web服务。本文将详细介绍如何使用XFire在Java中创建和消费Web服务。 首先,理解Web Service的基本概念至关重要。Web Service是一种采用统一的XML(可扩展标记语言)...

    xfire web service调用代码

    三、XFire与Web Service调用 在Java中,使用XFire调用Web服务的基本步骤如下: 1. 创建客户端代理:XFire使用WSDL文档生成客户端代理类。这个代理类提供了服务方法的直接访问,就像调用本地方法一样。可以使用XFire...

    Web_Service学习手册(Xfire) 以及书中的源码

    在"Web_Service学习手册(Xfire)"中,你可能会学习到以下关键知识点: 1. **Xfire安装与配置**:如何下载Xfire库,配置到项目中,以及如何设置环境变量。 2. **创建第一个Web服务**:从定义服务接口,到实现服务类,...

    MyEclipse+xFire开发Web Service

    【MyEclipse+xFire开发Web Service】是一个关于如何使用MyEclipse集成开发环境和xFire框架来构建和测试Web服务的教程。xFire是一个基于Java的SOAP框架,它提供了轻量级的信息处理机制,利用STAX进行SOAP消息处理。这...

    Web服务中XFire的配置和在客户端的配置,图解说明

    Web服务中XFire的配置和在客户端的配置,图解说明Web服务中XFire的配置和在客户端的配置,图解说明Web服务中XFire的配置和在客户端的配置,图解说明Web服务中XFire的配置和在客户端的配置,图解说明Web服务中XFire的...

    xfire开发web service文档.rar

    在文件列表中,"xfire开发web service文档.doc"可能是主文档,包含了整个教程的详细内容,包括理论解释、示例代码、步骤指南和可能的截图,以帮助读者逐步学习和实践使用XFire创建Web服务。 总的来说,这个压缩包...

    Java Web Service xFire Demo项目,带所有的包,完美运行

    本项目“Java Web Service xFire Demo”是一个完整的示例,用于演示如何在Java环境中使用xFire实现Web服务。 首先,让我们深入了解xFire的核心概念。xFire基于Apache CXF项目,它提供了强大的XML绑定、协议处理和WS...

    XFire返回自定义实体类实例

    XFire通过使用Java注解或XML配置文件,使得开发者可以快速地将Java对象暴露为Web服务,或者消费远程Web服务。 自定义实体类是我们在开发中经常会遇到的一种情况。实体类通常用于封装业务逻辑中的数据,它们是数据库...

    XFire Java Web Service 客户端

    《XFire Java Web Service 客户端详解》 在当今的软件开发中,Web服务已经成为分布式系统间交互的重要手段。XFire,作为一个历史悠久的Java Web Service框架,为开发者提供了便捷的方式来创建、部署和消费Web服务。...

    整理xfire和spring的集成 web service 面向服务编程 java

    【整合XFire与Spring进行Web ...创建专门管理XFire的配置文件`spring.xfire.xml`,在这个文件中,定义Web Service的服务端点、绑定和行为。例如,注册`UserService`接口的实现,并配置到Web Service中: ```xml ...

    8 XFire Web Service 入门.doc

    总之,XFire Web Service在MyEclipse 6中的应用为Java开发者提供了一个强大的平台,用于快速构建、部署和测试Web服务。通过上述步骤,无论是新手还是经验丰富的开发者,都能有效地利用XFire来提升Web服务开发的效率...

Global site tag (gtag.js) - Google Analytics