`
wwwzhouhui
  • 浏览: 361125 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webservices学习之xfire

阅读更多
今天整理了一下webservices xfire框架东东,下面当代码写出来,学习学习
1.项目用MYECLIPSE 建立,其中MYECLIPSE 中有自己的JAR xfire
  activation-1.1.jar,commons-attributes-api-2.1.jar,commons-beanutils-1.7.0.jar,commons-codec-1.3.jar,commons-logging-1.0.4.jar,jaxen-1.1-beta-9.jar,jaxws-api-2.0.jar,jdom-1.0.jar,jsr173_api-1.0.jar,mail-1.4.jar,saaj-api-1.3.jar,saaj-impl-1.3.jar,spring-1.2.6.jar,stax-api-1.0.1.jar,wsdl4j-1.6.1.jar,wstx-asl-3.2.0.jar,xbean-2.2.0.jar,
xbean-spring-2.8.jar,xfire-aegis-1.2.6.jar,xfire-annotations-1.2.6.jar,xfire-core-1.2.6.jar,xfire-java5-1.2.6.jar,xfire-jaxws-1.2.6.jar,xfire-jsr181-api-1.0-M1.jar,xfire-spring-1.2.6.jar

2.服务端代码
  服务端接口IBasic.java
 
package com.xfire;


import java.util.List;
import java.util.Map;

/***********************************************************************   
 *   
 *   IBasic.java     
 *   @copyright       Copyright:   2009-2012     
 *   @creator         周辉<br/>   
 *   @create-time   May 22, 2009   10:32:42 AM   
 *   @revision         $Id:     *   
 ***********************************************************************/
public interface IBasic {
	 /**   
     * 测试字符串   
     * @return   
     */   
    public String hello();    
   
    /**   
     * 取一辆汽车   测试对象传递   
     * @return   
     */   
    public Car getCar();    
    /**
     *   取得list 数据
     * @return
     */
    public List<String> getList();
    
    /**
     * 取得map 数据
     * @return
     */
    public Map<String,String> getMap();
    
    /**
     *  保存数据
     * @param map
     */
    public void setMap(Map<String,Car> map);
    
    
    /**
     *  保存数据 javabean
     * @param Car
     */
    public void setCar(Car car);
    
    /** 保存数据 list
     * 
     * @param list
     */
    public void setList(List<String> list);
    
    
    /** 保存数据 map
     * 
     * @param map
     */
    public void setMap2(Map<String,String> map);
    
    /** 保存数据 map
     * 
     * @param map
     */
    public void setList2(List<Car> list);
    
    
}


JAVA BEAN 代码 Car.java
package com.xfire;

import java.io.Serializable;

/***********************************************************************   
 *   
 *   Car.java     
 *   @copyright       Copyright:   2009-2012     
 *   @creator         周辉<br/>   
 *   @create-time   May 22, 2009   10:32:16 AM   
 *   @revision         $Id:     *   
 ***********************************************************************/
public class Car implements Serializable {
	public Car(){
		
	}
	private String color;
	private String length;
	private String name;
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public String getLength() {
		return length;
	}
	public void setLength(String length) {
		this.length = length;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}


服务端实现类 BasicService.java
package com.xfire;


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

/***********************************************************************   
 *   
 *   BasicService.java     
 *   @copyright       Copyright:   2009-2012     
 *   @creator         周辉<br/>   
 *   @create-time   May 22, 2009   10:33:21 AM   
 *   @revision         $Id:     *   
 ***********************************************************************/
public class BasicService implements IBasic {
	/**
	 * 取一辆汽车 测试对象传递
	 * 
	 * @return
	 */
	public Car getCar() {
		Car car = new Car();
		car.setColor("RED红色");
		car.setLength("2400");
		car.setName("HAHACHE");
		return car;
	}

	/**
	 * 测试字符串
	 * 
	 * @return
	 */
	public String hello() {
		return "hello zhouhui";
	}

	/**
	 * 取得list 数据
	 * 
	 * @return
	 */
	public List<String> getList() {
		List<String> list = new ArrayList<String>();
		list.add("1");
		list.add("2");
		list.add("3");
		return list;
	}

	/**
	 * 取得map 数据
	 * 
	 * @return
	 */
	public Map<String, String> getMap() {
		Map<String, String> map = new HashMap<String, String>();
		if (map.isEmpty()) {
			map.put("1", "zhouhui1");
			map.put("2", "zhouhui2");
			map.put("3", "zhouhui3");
		}
		return map;
	}

	/**
	 * 保存数据
	 * 
	 * @param map
	 */
	public void setMap(Map<String, Car> map) {
		for (Map.Entry<String, Car> item : map.entrySet()) {
			System.out.println("mapkey: " + item.getKey());
			System.out.println("mapvalue: " + item.getValue().getColor());
			System.out.println("mapvalue: " + item.getValue().getName());
		}
	}
	
	 /**
     *  保存数据
     * @param map
     */
    public void setCar(Car car){
    	System.out.println("car: " + car.getColor());
    	System.out.println("car: " + car.getLength());
    	System.out.println("car: " + car.getName());
    }
    
    /** 保存数据 list
     * 
     * @param list
     */
    public void setList(List<String> list){
    	for (String s:list){
    		System.out.println("list: " + s);
    	}
    }
    
    /** 保存数据 map
     * 
     * @param map
     */
    public void setMap2(Map<String,String> map){
    	for (Map.Entry<String, String> item:map.entrySet()){
    		System.out.println("mapkey: " + item.getKey());
    		System.out.println("mapvalue: " + item.getValue());
    	}
    }
    
    /** 保存数据 map
     * 
     * @param map
     */
    public void setList2(List<Car> list){
    	for (Car c:list){
    		System.out.println("color: " + c.getColor());
    		System.out.println("name: " + c.getName());
    		System.out.println("length: " + c.getLength());
    	}
    }
}


客户端测试代码
testClient.java
package com.xfire;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
/*******************************************************************************
 * 
 * testClient.java
 * 
 * @copyright Copyright: 2009-2012
 * @creator 周辉<br/>
 * @create-time May 22, 2009 10:34:14 AM
 * @revision $Id: *
 ******************************************************************************/
public class testClient {
	public static void main(String[] args) {
		Service srvcModel = new ObjectServiceFactory()
				.create(IBasic.class);
		XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
				.newInstance().getXFire());

		String helloWorldURL = "http://localhost:8081/xfire/services/HelloService";
		try {
			IBasic basic = (IBasic) factory.create(srvcModel,
					helloWorldURL);
			 // 客户端调用服务端list 数据
	        List<String> list =basic.getList();
	        for (String s :list){
	        	 System.out.println("list: " + s);    
	        }
	        System.out.println("Hello: " + basic.hello());    
	        System.out.println("car: " + basic.getCar().getName()); 
	        // 客户端调用服务端MAP 数据
	        Map<String,String> map =basic.getMap();
	        for(Map.Entry<String,String> item:map.entrySet()){
	        	System.out.println("mapkey: " +item.getKey()); 
	        	System.out.println("mapvalue: " +item.getValue());    
	        }
//	        // 客户端向服务端发送数据
//	        Map<String,Car> map2 = new HashMap<String,Car>();
//	        if(map2.isEmpty()){
//	        	Car c = new Car();
//	        	c.setColor("red");
//	        	c.setLength("111");
//	        	c.setName("zhouhui");
//	        	map2.put("1", c);
//	        	map2.put("2", c);
//	        	map2.put("3", c);
//	        }
//	        basic.setMap(map2);
	        
	        //客户端向服务端发送数据 javabean
	        Car c = new Car();
	        c.setColor("red");
        	c.setLength("111");
        	c.setName("zhouhui");
        	basic.setCar(c);
        	
        	//客户端向服务端发送数据 list
        	List<String> list4= new ArrayList<String>();
        	list4.add("zhouhui1");
        	list4.add("zhouhui4");
        	list4.add("zhouhui2");
        	list4.add("zhouhui5");
        	basic.setList(list);
        	
        	//客户端向服务端发送数据 map
        	Map<String,String> map4= new HashMap<String,String>();
        	map4.put("1", "test1");
        	map4.put("2", "test2");
        	map4.put("3", "test3");
        	map4.put("4", "test4");
        	basic.setMap2(map4);
        	
        	////客户端向服务端发送数据 list javabean
        	List<Car> list5= new ArrayList<Car>();
        	for (int i=0;i<4;i++){
        		Car c2= new Car();
        		c2.setColor("red");
        		c2.setLength(i+"");
        		c2.setName("zhouhui"+i);
        		list5.add(c2);
        	}
        	basic.setList2(list5);
        	
//	        // 客户端向服务端发送数据
	        Map<String,Car> map2 = new HashMap<String,Car>();
            for (int i=0;i<4;i++){
            	Car c24= new Car();
            	c24.setColor("red");
            	c24.setLength(i+"");
            	c24.setName("zhouhui"+i);
            	map2.put(i+"", c24);
            }
	        basic.setMap(map2);

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


其中用到MAP 传递JAVABEAN,所以要用到IBasic.aegis.xml
XXX.aegis.xml,其中IBasic 实现服务端接口名称
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
        <method name="setCar">
            <parameter componentType="com.xfire.Car"/>
        </method>
        <method name="setMap">
            <parameter index="0" keyType="java.lang.String" componentType="com.xfire.Car"/>
        </method>
        <method name="setList2">
            <parameter index="0" componentType="com.xfire.Car"/>
        </method>
</mapping>
</mappings>

需要传递服务端代码 <method name="setCar">setCar 对以接口方法名称
parameter 是借口中传递的参数 index 是参数的第几个位置 componentType 参数传递的类型

下面还有一个XML暴露接口和实现类的XML 文件
services.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
       <name>HelloService</name>
        <serviceClass>com.xfire.IBasic</serviceClass>
       <implementationClass>com.xfire.BasicService</implementationClass>
    </service>
    <!--
    <service>
       <name>FileService</name>
        <serviceClass>test.IFileTransport</serviceClass>
       <implementationClass>test.FileTransportimpl</implementationClass>
        <scope>request</scope>
        <properties>
        	<propertie key="mtom-enabled">true</propertie>
        </properties>
    </service>
      -->
</beans>

其中name是发布该接口调用的名,serviceClass 是服务端暴露的接口
implementationClass是接口的实现类

web.xml 描述
<?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>/servlet/XFireServlet/*</url-pattern>
    </servlet-mapping>
  <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>


好了可以发布程序了,用MYeclipse 发布TOMCAT 启动TOMCAT
客户端口运行testClient 调用服务端数据,同时发送客户端数据写入服务端,服务端控制台可以打印出记录。
一切OK了,详细代码可以参考附件
分享到:
评论
1 楼 renguistyle 2010-03-15  
  Service srvcModel = new ObjectServiceFactory()  
                .create(IBasic.class);  
这样就对服务端产生依赖了。

相关推荐

    XFire_demo.zip_XFire_demo_java webservices_webservices_xfire dem

    7. **配置文件**:分析"webservices"文件,可能包含服务的部署描述符(如web.xml)和其他XFire特定的配置文件,学习如何配置服务的行为和属性。 这个压缩包是一个很好的学习资源,对于想要深入理解Java Web服务和...

    MyEclipse+XFire开发Web Services

    - **项目创建**:学习了如何在MyEclipse中创建Web Services项目,并使用XFire自动生成必要的服务文件。 - **部署与测试**:了解了如何将Web Services打包成WAR文件并部署到Tomcat服务器上,同时学会了如何通过浏览器...

    xfire webservices源码

    【xfire webservices源码】是一个用于理解和学习Web服务实现的开源项目,它基于XFire框架,该框架是Java世界中一个流行的SOAP和RESTful Web服务实现工具。XFire允许开发者快速、简单地构建和部署Web服务。在这个源码...

    实现webServices接口调用demo

    在Java中,XFire是一个流行的框架,用于快速开发和部署Web服务。本教程将深入讲解如何使用XFire在Java环境中实现Web服务接口的调用,包括内部和外部访问。 一、Web服务简介 Web服务是通过SOAP(Simple Object ...

    XFire开发Web Services

    ### 使用XFire开发Web Services详解 #### 一、概述 XFire是一款开源的轻量级Web服务框架,它简化了Web服务的开发过程,使得开发者能够更轻松地创建和使用Web服务。本篇文章将详细介绍如何使用XFire来开发Web ...

    java webservices xfire Demo

    在本文中,我们将深入探讨Xfire在Java Web服务开发中的应用,并通过提供的Demo来学习其基本操作。 首先,理解Java Web服务(JWS)的概念至关重要。Java Web服务是一种遵循标准(如SOAP、WSDL和UDDI)的软件,它允许...

    XFire实现webServices源码

    在提供的“xFire实现webservices”项目中,你可以找到以下关键部分: 1. **服务接口类**:定义了Web服务的公共方法,通常以`interface`的形式存在。 2. **服务实现类**:实现了接口中的所有方法,是Web服务的实际...

    webservices xfire实例

    该资源包括两个文件夹一个是webservices xfire框架的客户端,另一个是服务器端,该项目采用的是IDE环境自动生成的,使用的是myeclipse8.6,如果不想使用IDE环境生成就自己下载xfire相应的jar包然后导入,即可自己...

    Exporting beans as web services using XFire

    标题“Exporting beans as web services using XFire”指的是利用XFire框架将Java Beans导出为Web服务。在本文中,我们将深入探讨这个主题,并结合标签“源码”和“工具”,来理解如何通过源代码和特定工具实现这一...

    Java中使用XFire开发简单的WebServices.pdf

    Java作为主流的开发语言之一,自然成为了构建Web Services的重要工具。 本文档主要介绍了如何使用XFire框架在Java环境中搭建并部署简单的Web Services应用。XFire是一个基于Java的轻量级Web Services框架,提供了一...

    xfire_webservices

    【xfire_webservices】是关于Web服务使用的讨论,涵盖了Web服务的基本概念、涉及的关键技术以及主流的Web服务框架,特别是Apache的XFire框架。Web服务是一种通过Web调用的应用程序接口,允许不同系统间的数据交换和...

    xfire整合spring发布web services

    【Xfire整合Spring发布Web Services】是将Xfire——一个基于Java的Web服务实现框架,与Spring——一个广泛使用的轻量级应用框架相结合,用于构建和发布Web服务的过程。这个整合使得开发人员能够利用Spring的强大功能...

    XFire用户库包-开发WebServices服务

    XFire是一款早期流行的Java Web Services框架,用于开发和部署SOAP服务。它提供了全面的工具集,使得开发者可以方便地创建、测试和管理Web服务。在本文中,我们将深入探讨如何利用XFire用户库包来开发Web Services...

    java使用xfire创建和调用webservices

    Java 使用 XFire 创建和调用 WebServices 是一个常见的任务,特别是在构建分布式系统和服务导向架构(SOA)中。XFire 是一个 Java 框架,它简化了 WebService 的开发和消费过程。在这个主题中,我们将深入探讨如何...

    XFire-WebServices傻瓜配置.doc

    **XFire-WebServices傻瓜配置** XFire是一款开源的Java Web Services框架,它使得开发者能够轻松地创建和消费Web服务。XFire提供了简洁的API和XML绑定,使其成为开发人员构建基于SOAP的服务的理想选择。在本文档中...

    eclipse 使用xfire开发webservices server

    标题中的“eclipse使用xfire开发webservices server”意味着我们将使用Eclipse IDE和XFire来创建和部署一个Web服务服务器。以下是一步步的操作步骤: 1. **安装Eclipse和XFire插件**:首先确保你的Eclipse已经安装...

    java利用 xfire实现 webservices 服务端与客户端

    Java使用XFire实现Web服务(WebServices)是Java开发中的一种常见技术,它允许应用程序通过网络交换数据。XFire是一个轻量级、高性能的框架,它简化了在Java应用程序中创建和消费Web服务的过程。本篇文章将深入探讨...

    Myeclipse开发基于xfire的Web Services

    使用Myeclipse开发基于xfire的Web Services 入门,如何开发Web Services

Global site tag (gtag.js) - Google Analytics