`
raindrop
  • 浏览: 28417 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论
阅读更多

XFire开发web service

 

环境介绍

1.JDK6

2.myeclipse6.0.1

3.tomcat5.5

4.xfire1.2.6

 

开发步骤

(一)服务器端开发

1 在myeclipse下建立web service project ,命名为webservice;

2 在src文件夹下建立三个包,包名如下:

   com.hust.dm.beans

   com.hust.dm.services

   com.hust.dm.servicesImpl

3 在beans包下新建类Book,代码如下:

package com.hust.dm.beans;

public class Book {
	private String name;
	private String isbn;
	private String auther;
	private String year;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getIsbn() {
		return isbn;
	}
	public void setIsbn(String isbn) {
		this.isbn = isbn;
	}
	public String getAuther() {
		return auther;
	}
	public void setAuther(String auther) {
		this.auther = auther;
	}
	public String getYear() {
		return year;
	}
	public void setYear(String year) {
		this.year = year;
	}
}

 4 在services包下新建立服务接口类BookManager,代码如下:

package com.hust.dm.services;

import java.util.List;

import com.hust.dm.beans.Book;

public interface BookManager {
	public Book getBook();
	public void setBook(Book book);
	public List<Book> getBooks();
}

 5 在servicesImpl包下新建对应服务接口的实现类BookManagerImpl,代码如下:

package com.hust.dm.servicesImpl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.hust.dm.beans.Book;
import com.hust.dm.services.BookManager;

public class BookManagerImpl implements BookManager {
	private Book book = null;

	public Book getBook() {
		// TODO Auto-generated method stub
		if(book == null) {
			book = new Book();
			book.setAuther("raindrop");
			book.setIsbn("450001");
			book.setName("《IT世界》");
			book.setYear("2000");
		}
		return book;
	}

	public List<Book> getBooks() {
		// TODO Auto-generated method stub
		List<Book> list = new ArrayList<Book>();
		Book book = new Book();
		book.setAuther("raindrop");
		book.setIsbn("450001");
		book.setName("《IT世界》");
		book.setYear("2000");
		
		Book book1 = new Book();
		book1.setAuther("ychao");
		book1.setIsbn("450002");
		book1.setName("《遗失的美好》");
		book1.setYear("2001");
		list.add(book);
		list.add(book1);
		return list;
	}

	public void setBook(Book book) {
		// TODO Auto-generated method stub
		System.out.println("[" + getTime() + "]: book reset !");
		this.book = book;
	}
	public String getTime() {
		SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd kk:mm:ss");
		Date date = new Date();
		return sdf.format(date);
	}
}

  6 新建web service

 选中webservice工程-->右击-->new-->other-->web service,弹出的第一个窗口默认即可,第二个需输入所建service的名字(BookManager)、服务接口(com.hust.dm.services.BookManager)、服务实现类(com.hust.dm.services.BookManagerImpl)、紧跟的两个选项可以采用默认的设置。

   7 将工程部署至tomcat服务器中:直接将webservice依Myeclipse Server Application方式运行,选择配置的tomcat5即可。

8 打开浏览器输入http://localhost:8080/webservice/services/BookManager?wsdl检查服务是否发布成功,显示wsdl文件说明发布成功。

 

(二)客户端开发

a、通过服务器端的beans接口类编写客户端调用代码

   要求:客户端能够得到服务器端的beans接口类

我们可以新建java project,将webservice project下的com.hust.dm.services和com.hust.dm.beans包拷贝到新建的工程下,简单起见,我们直接在webservic 工程下编写客户端调用代码。

1 在src文件夹下新建test.client包

2 在test.clients包下新建调用类BookManagerClient,代码如下: 

package test.clients;

import java.util.List;

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

import com.hust.dm.beans.Book;
import com.hust.dm.services.BookManager;


public class BookManagerClient {
	public static void main(String[] args) {
		try {
			String url = "http://127.0.0.1:8080/webservice/services/BookManager";
			Service service = new ObjectServiceFactory().create(BookManager.class);
			BookManager bookManager = (BookManager)new XFireProxyFactory().create(service, url);
			
			System.out.println("得到的BOOK:");
			Book book = bookManager.getBook();
			System.out.println("BOOK:("+book.getIsbn()+" "+book.getName()+" "+book.getAuther()+" "+book.getYear()+")");
			System.out.println("得到的BOOK列表:");
			List<Book> list = bookManager.getBooks();
			for(int i=0; i<list.size(); ++i) {
				book = list.get(i);
				System.out.println("BOOK:("+book.getIsbn()+" "+book.getName()+" "+book.getAuther()+" "+book.getYear()+")");
			}
			System.out.println("重设服务器端BOOK...");
			Book resetBook = new Book();
			resetBook.setAuther("doubles");
			resetBook.setIsbn("450003");
			resetBook.setName("《青梅煮酒》");
			resetBook.setYear("2000");
			bookManager.setBook(resetBook);
			System.out.println("重设后的BOOK:");
			book = bookManager.getBook();
			System.out.println("BOOK:("+book.getIsbn()+" "+book.getName()+" "+book.getAuther()+" "+book.getYear()+")");
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

  3 运行客户端代码,检查调用是否成功,调用成功将显示如下调用结果:

 

   得到的BOOK:
   BOOK:(450001 《IT世界》 raindrop 2000)
   得到的BOOK列表:
   BOOK:(450001 《IT世界》 raindrop 2000)
   BOOK:(450002 《遗失的美好》 ychao 2001)
   重设服务器端BOOK...
   重设后的BOOK:
   BOOK:(450003 《青梅煮酒》 doubles 2000)

 

b、通过myeclipse自带的xfire插件或ant工具产生客户端代码

    本文介绍使用ant工具产生客户端的调用代码。

    1 新建java project命名为webservice_invoke

    2 在webservice_invoke下建立如附件1所示文档结构

          lib: 包含xfire发布文件目录下的xfire-all-1.2.6.jar和lib文件夹下的所以jar文件

          build.xml为ant运行配置文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project name="XFire-WsGen" basedir="." default="wsgen">  
  
     <path id="classpathId">  
  
         <fileset file="${basedir}/lib/*.jar"/>  
  
     </path>  
  
     <target name="clean" description="Prepare for clean build">
  
         <delete dir="${basedir}/client"/>  
  
         <mkdir dir="${basedir}/client"/>  
  
     </target>
     
     <target name="wsgen" depends="clean">  
  
         <taskdef name="WsGenTask" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="classpathId"/>  
  
         <WsGenTask outputDirectory="${basedir}/client" wsdl="http://localhost:9090/webservice/services/BookManager?wsdl" package="com.hust.dm.clients" overwrite="true"/>  

     </target>  
  
</project>

 

3 使用ant运行build.xml,运行结束后刷新client文件夹,将产生附件2所示的文档结构

4 将client文件夹下的所有内容拷贝到src文件夹下(文档结构如附件3所示),此时会提示出错,原因没有引入xfire所需的包,将第二步lib下的jar包引入build path即可。

5 在src下新建调用包ws.invoke.dm,并在该包下建立调用类BookManagerInvoker,代码如下:

package ws.invoke.dm;

import java.util.List;

import com.hust.dm.beans.ArrayOfBook;
import com.hust.dm.beans.Book;
import com.hust.dm.clients.BookManagerClient;
import com.hust.dm.clients.BookManagerPortType;

public class BookManagerInvoker {
	private BookManagerClient bmClient = null;
	private BookManagerPortType bmPT = null;
	//bean对象、集合产生工厂
	private com.hust.dm.beans.ObjectFactory beanOF = null;
	//远程调用方法参数和返回值产生工厂
	private com.hust.dm.services.ObjectFactory serviceOF = null;
	public BookManagerInvoker() {
		bmClient = new BookManagerClient();
		bmPT = bmClient.getBookManagerHttpPort();
		beanOF = new com.hust.dm.beans.ObjectFactory();
		serviceOF = new com.hust.dm.services.ObjectFactory();
	}
	public void getBook() {
		System.out.println("得到的BOOK:");
		Book book = bmPT.getBook();
		System.out.println("BOOK:("+book.getIsbn().getValue()+" "+book.getName().getValue()+" "+book.getAuther().getValue()+" "+book.getYear().getValue()+")");
	}
	public void getBooks() {
		System.out.println("得到的BOOK列表:");
		ArrayOfBook array = bmPT.getBooks();
		List<Book> list = array.getBook();
		for(Book book : list) {
			System.out.println("BOOK:("+book.getIsbn().getValue()+" "+book.getName().getValue()+" "+book.getAuther().getValue()+" "+book.getYear().getValue()+")");
		}
	}
	public void setBook(String isbn, String name, String auther, String year) {
		System.out.println("重设服务器端BOOK...");
		Book book = beanOF.createBook();
		book.setAuther(beanOF.createBookAuther(auther));
		book.setIsbn(beanOF.createBookIsbn(isbn));
		book.setName(beanOF.createBookName(name));
		book.setYear(beanOF.createBookYear(year));
		bmPT.setBook(book);
	}
	public static void main(String[] args) {
		BookManagerInvoker invoker = new BookManagerInvoker();
		invoker.getBook();
		invoker.setBook("450004", "《爱我中华》", "doubles", "2008");
		invoker.getBook();
		invoker.getBooks();
	}
}

 

6 运行BookManagerInvoker,检查调用是否成功。

  • 大小: 3.4 KB
  • 大小: 12.2 KB
  • 大小: 13.5 KB
分享到:
评论

相关推荐

    Xfire实战[Web服务开发之旅]

    ### Xfire实战[Web服务开发之旅] #### 一、Xfire简介 Xfire是一个轻量级的、基于Java的Web服务框架,它提供了一种简单而高效的方式来构建和消费Web服务。Xfire的设计目标是使开发人员能够快速地创建出高性能、可...

    webservice spring xfire的实例

    【标题】:“Web服务与Spring整合——XFire实战” 【描述】:这篇博客文章通过一个实际的案例,探讨了如何将Web服务与Spring框架相结合,使用XFire进行开发。XFire是Spring框架早期用于实现Web服务的一个库,它提供...

    Axis and Xfire

    4. "Xfire实战[Web服务开发之旅].pdf" - 这可能是一个实战案例集,通过具体的项目实例,帮助读者理解如何在实际开发中运用Xfire。 5. "Axis Webservice开发.pdf" - 这个文档应该是关于使用Axis开发Web服务的详细指南...

    xFire的详细使用与实例

    《xFire深度解析与实战指南》 xFire,作为一个历史悠久的Web服务框架,它在早期的Web服务开发中扮演了重要角色。本文将深入探讨xFire的使用方法、实例演示,以及如何将其与Spring框架集成,帮助开发者更好地理解和...

    xfire服务端demo

    《Xfire服务端Demo详解与实战》 Xfire是一款基于Java技术构建的Web服务框架,专为开发高质量、高性能的Web服务而设计。在本文中,我们将深入探讨Xfire服务端Demo,理解其核心概念、功能特性,并通过具体的代码示例...

    实战Mule:利用Mule调用XFire发布的Web服务

    【实战Mule:利用Mule调用XFire发布的Web服务】这一主题主要涵盖了两个核心概念:Mule ESB(企业服务总线)和XFire,它们都是在IT领域中的重要工具,尤其在分布式系统和集成解决方案中发挥着关键作用。 Mule ESB是一...

    xfire webservice 实例

    总的来说,这个实例是一个典型的Java企业级应用的实战案例,演示了如何利用xfire创建Web服务,通过Spring进行组件管理和事务控制,以及使用Hibernate进行数据库操作。对于想要深入理解这些技术以及它们在Web服务中的...

    XFire中实现WS-Security经典

    这个文档很可能是详细介绍了上述概念和步骤的实战指南,包括具体的代码示例、配置样例以及可能遇到的问题和解决方案。通过阅读这份文档,开发者可以深入了解如何在实际项目中结合XFire和WS-Security,以构建安全的...

    实战Mule:利用Mule调用XFire发布的文件上传服务

    本文将基于"实战Mule:利用Mule调用XFire发布的文件上传服务"这一主题,详细阐述如何利用这两个工具实现文件上传服务的集成。 首先,我们需要理解Mule ESB的核心概念。Mule ESB提供了一个灵活且可扩展的架构,用于...

    ssh及XFire+Spring构建WebService

    SSH(Struts2 + Spring + Hibernate)是一种常见的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。...对于初学者,这是一个很好的实战练习,可以帮助他们理解和掌握这些技术的综合运用。

    MyEclipse[实战开发讲解入门..XFire.Web.Service.入门

    《MyEclipse实战开发讲解入门XFire.Web.Service.入门》 在IT行业中,MyEclipse作为一款强大的Java集成开发环境,被广泛应用于企业级应用的开发。本资源包旨在为初学者提供一个全面的MyEclipse实战开发指南,特别是...

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

    #### 实战步骤详解 ##### 第一步:创建项目 1. **启动MyEclipse**:确保MyEclipse软件已经安装并且可以正常启动。 2. **新建Java项目**:通过`File -&gt; New -&gt; Project…`创建新的Java项目,命名为`JavaWS`。 3. **...

    Axis+ Xfire 电子书

    7. **实战项目**:创建一个实际应用,如一个桌面小工具,实时显示 Xfire 用户的游戏状态。 通过这份电子书,读者应该能够掌握 Axis 与 Xfire 结合使用的基本概念和技术,从而有能力开发自己的 Web 服务客户端或集成...

    XFire1.2使用例子

    《XFire1.2实战解析》 XFire是一款在Java平台上流行的开源服务框架,它主要用于构建分布式系统和服务。本文将围绕XFire1.2版本,通过一个实际的使用例子,深入探讨其核心功能和应用场景。 首先,理解XFire的核心...

    xfire

    9. 实战案例:可能通过一个实际的游戏通信场景,展示如何使用Websocket实现玩家之间的实时交互。 由于具体博文内容未知,以上内容只能根据标题、标签和压缩包文件名进行推测。若要了解更多详细信息,需访问博文链接...

    WebService技术手册 CXF&XFire

    - **CXF实用手册.pdf**:此手册涵盖了CXF的全面知识,从安装配置到实战案例,深入浅出地讲解了如何利用CXF构建和管理WebService,是CXF开发者的重要参考文献。 通过以上内容,你可以全面了解并掌握WebService的基础...

    xfire下webservice服务实例.docx

    【XFire:Java SOAP 框架详解及MyEclipse实战】 XFire是Java开发者用于构建Web服务的一个开源SOAP框架,它提供了轻量级的信息处理模块,并利用STAX(Streaming API for XML)来处理SOAP消息。XFire不仅支持简单的...

Global site tag (gtag.js) - Google Analytics