`

XFire使用举例

阅读更多

 闲来无事,顺便写个XFire的小例子,也算是打发时间了,o(∩_∩)o...哈哈

 

定义POM文件:

 

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.danlley.xfire</groupId>
	<artifactId>xfire_001</artifactId>
	<packaging>war</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>xfire_001 Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>org.codehaus.xfire</groupId>
			<artifactId>xfire-spring</artifactId>
			<version>1.2.6</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.3</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
	<build>
		<finalName>xfire_001</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

 

 

 

 构造需用的数据模型:

 

一:构造Book模型

 

package org.codehaus.xfire.demo;

public class Book {
	private String title;
	private String isbn;
	private String author;

	public String getIsbn() {
		return isbn;
	}

	public void setIsbn(String isbn) {
		this.isbn = isbn;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getAuthor() {
		return author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}

	public String toString() {
		return "[title=" + this.title + "\tisbn=" + this.isbn + "\tauthor="
				+ this.author + "]";
	}
}

 

 

 二:构造Order模型:

 

package org.codehaus.xfire.demo;

public class Order {
	private String order_id;
	private String quantity;
	private String price;

	public String getOrder_id() {
		return order_id;
	}

	public void setOrder_id(String order_id) {
		this.order_id = order_id;
	}

	public String getQuantity() {
		return quantity;
	}

	public void setQuantity(String quantity) {
		this.quantity = quantity;
	}

	public String getPrice() {
		return price;
	}

	public void setPrice(String price) {
		this.price = price;
	}

	public String toString() {
		return "[price=" + this.price + "\tquantity=" + this.quantity
				+ "\torder_id=" + this.order_id + "]";
	}
}

 

 

三:构造调用返回对象

 

package org.codehaus.xfire.demo;

public class Result {

	private boolean isSuccess = false;

	private String message;

	public boolean isSuccess() {
		return isSuccess;
	}

	public void setSuccess(boolean isSuccess) {
		this.isSuccess = isSuccess;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}

 

定义XFire接口:

 

package org.codehaus.xfire.demo;

import java.util.Map;

public interface BookService {

	public Book[] getBooks();

	public Book findBook(String isbn);

	@SuppressWarnings("unchecked")
	public Map getBooksMap();

	public Book initBooks(Book book);

	public Result record(Book book, Order order);
}

 

 

XFire对外接口实现:

 

package org.codehaus.xfire.demo;

import java.util.HashMap;
import java.util.Map;

public class BookServiceImpl implements BookService {
	private Book onlyBook;

	public Book initBooks(Book book) {
		book.setAuthor("danlley");
		return book;
	}

	public Result record(Book book, Order order) {
		System.out.println(order.toString());
		System.out.println(book);

		Result result = new Result();
		result.setSuccess(true);
		return result;
	}

	public BookServiceImpl() {
		onlyBook = new Book();
		onlyBook.setAuthor("Dan Diephouse");
		onlyBook.setTitle("Using XFire");
		onlyBook.setIsbn("0123456789");
	}

	public Book[] getBooks() {
		return new Book[] { onlyBook };
	}

	public Book findBook(String isbn) {
		System.out.println(isbn);
		return onlyBook;
	}

	@SuppressWarnings("unchecked")
	public Map getBooksMap() {
		Map result = new HashMap();
		result.put(onlyBook.getIsbn(), onlyBook);
		return result;
	}
}

 

 

在 src\main\webapp\WEB-INF\classes\META-INF\xfire下定义services.xml,如下:

<beans xmlns="http://xfire.codehaus.org/config/1.0">
	<service>
		<name>BookService</name>
		<namespace>http://xfire.codehaus.org/BookService</namespace>
		<serviceClass>org.codehaus.xfire.demo.BookService</serviceClass>
		<implementationClass>
			org.codehaus.xfire.demo.BookServiceImpl
		</implementationClass>
	</service>
</beans>

 

 在src\main\webapp\WEB-INF下定义web.xml,如下:

 

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
	<servlet>
		<servlet-name>XFireServlet</servlet-name>
		<display-name>XFire Servlet</display-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>
</web-app>

 

 开始编写客户端调用:

 

1). 无参数方法调用

 

	@SuppressWarnings("unchecked")
	private void testBookService() {
		String serviceURL = "http://localhost:8080/xfire_001/services/BookService";
		Service serviceModel = new ObjectServiceFactory().create(
				BookService.class, null,
				"http://xfire.codehaus.org/BookService", null);

		XFireProxyFactory serviceFactory = new XFireProxyFactory();

		try {
			BookService service = (BookService) serviceFactory.create(
					serviceModel, serviceURL);
			Client client = Client.getInstance(service);
			client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");

			Book[] books = service.getBooks();
			Map booksMap = service.getBooksMap();
			System.out.print("Received map with " + booksMap.size()
					+ " book(s) \n");
			System.out.println("BOOKS:");

			for (int i = 0; i < books.length; i++) {
				System.out.println(books[i].getTitle());
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}

 

 2). 参数为单个对象的方法调用

 

	private void testBook_002() {
		String service_url = "http://localhost:8080/xfire_001/services/BookService";
		Service serviceModel = new ObjectServiceFactory().create(
				BookService.class, null,
				"http://xfire.codehaus.org/BookService", null);
		XFireProxyFactory serviceFactory = new XFireProxyFactory();
		try {
			BookService service = (BookService) serviceFactory.create(
					serviceModel, service_url);
			Client client = Client.getInstance(service);
			client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");
			Book book = new Book();
			book.setAuthor("min.weixm");
			Book my = service.initBooks(book);
			System.out.println("my.getAuthor()" + my.getAuthor());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

3). 接口参数为多个的情况下,方法调用

 

	private void testBook_001() {
		String service_url = "http://localhost:8080/xfire_001/services/BookService";
		Service serviceModel = new ObjectServiceFactory().create(
				BookService.class, null,
				"http://xfire.codehaus.org/BookService", null);
		XFireProxyFactory serviceFactory = new XFireProxyFactory();
		try {
			BookService service = (BookService) serviceFactory.create(
					serviceModel, service_url);
			Client client = Client.getInstance(service);
			client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");
			Result result = service.record(getBook(), getOrder());
			System.out.println("result:" + result.isSuccess());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

未完待续

 

 

分享到:
评论

相关推荐

    Xfire使用说明文档

    1. 开发包需求:Xfire的使用在APPFUSE项目中已经集成,因此无需单独添加任何包。APPFUSE是一个快速开发框架,它包含了对Web服务支持的各种依赖库。 2. 创建`xfire-servlet.xml`配置文件:在`/WebContent/WEB-INF`...

    xfire的使用详解

    &lt;param-value&gt;classpath:spring/app.xml,classpath:org/codehaus/xfire/spring/xfire.xml &lt;!--配置xfire ws--&gt; &lt;servlet-name&gt;XFireServlet &lt;servlet-class&gt;org.codehaus.xfire.spring....

    java使用XFire调用webService接口

    "Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...

    xfire 使用外部类、返回collection及输入数组参数示例

    在这个“xfire 使用外部类、返回collection及输入数组参数示例”中,我们将深入探讨如何利用Xfire来处理复杂的参数类型,包括外部类引用、集合(Collection)返回以及数组作为输入参数。 ### 1. 外部类的使用 在...

    xfire 使用方法

    XFire还提供了一个强大灵活的接口,用于支持JSR-181规范,可以使用注解的方式来定义Web服务的接口。它的客户端和服务器端代码都可以通过XFire自动生成,大大提升了开发效率。 在XFire的配置中,需要特别注意的是...

    使用XFire发布WebService

    【标题】: 使用XFire发布WebService 在Web服务的世界中,XFire是一个强大的开源框架,它使得开发和部署Web服务变得简单。XFire是Apache CXF的前身,它提供了全面的WS-*支持,包括SOAP、WSDL、UDDI、MTOM等标准,...

    在 MyEclipse 上使用 XFire 编写 Web Service

    在 MyEclipse 上使用 XFire 编写 Web Service.rar在 MyEclipse 上使用 XFire 编写 Web Service.rar在 MyEclipse 上使用 XFire 编写 Web Service

    Java使用XFire调用WebService接口

    这篇博客“Java使用XFire调用WebService接口”显然是讨论如何利用XFire这个开源框架来与Web服务交互。 XFire是Apache CXF项目的前身,它提供了一种简单的方式来创建和消费SOAP Web服务。XFire的强项在于其轻量级和...

    xfire客户端生成

    2. **使用XFire工具**:XFire提供了命令行工具或者API来解析WSDL文件并生成对应的Java客户端代码。这些代码包含了必要的类和接口,使得开发者可以直接调用Web服务的方法。 3. **生成Java代码**:运行XFire的wsdl2...

    XFire1.2使用例子

    《XFire1.2使用详解》 XFire是一款在Java平台上用于构建分布式应用程序的服务框架,它为开发人员提供了丰富的服务发现、服务注册、服务通信等功能。这篇博客将深入探讨XFire1.2的使用,帮助开发者更好地理解和应用...

    xFire的详细使用与实例

    本文将深入探讨xFire的使用方法、实例演示,以及如何将其与Spring框架集成,帮助开发者更好地理解和应用这个工具。 首先,我们要了解xFire的核心概念。xFire是基于Java的,它主要用来创建和消费SOAP(Simple Object...

    使用xfire发布的webservice完整实例

    6. **测试与调用**:发布服务后,可以使用Xfire的测试工具,或者其他的SOAP客户端工具(如SoapUI)来测试你的Web服务。通过发送SOAP请求,你可以验证服务是否按预期工作。 【示例中的员工管理服务】 在这个...

    java 调用webservice使用HttpClient和XFire两种方式

    本文将详细介绍如何使用HttpClient和XFire这两种不同的库来调用Web Service,特别是针对短信接口的调用。 首先,让我们了解Web Service的基本概念。Web Service是一种基于互联网的、平台无关的交互方式,它允许不同...

    eclipse 使用xfire开发webservices server

    本文将深入探讨如何使用Eclipse集成开发环境(IDE)结合XFire库来开发Web服务服务器端。XFire是Apache CXF的一部分,是一个轻量级、高性能的Java Web服务框架,支持SOAP、WS-*规范以及RESTful风格的服务。 首先,...

    xfire依赖jar包

    在使用xfire时,需要根据项目需求选择合适的依赖包,并正确配置到项目的类路径中,以确保xfire能够正常工作。同时,随着技术的发展,xfire已经被更现代化的框架如Apache CXF所取代,但理解xfire的原理和工作方式对于...

    xfire

    1. **网络编程**:xfire需要处理大量的网络通信,包括TCP/IP协议的使用、数据包的封装和解封装、延迟优化等。 2. **多线程与并发**:为了处理并发用户,xfire必须有效地管理和调度多个线程,确保系统稳定运行。 3. *...

    Xfire API,Xfire帮助文档

    虽然这里没有具体指出Xfire API 使用的是哪种模型,但RESTful API 因其简洁和高效,通常更受开发者青睐。 为了利用Xfire API,开发者首先需要注册获得API密钥,这个密钥用于识别开发者身份并在请求中验证。然后,...

    Xfire-v1.99 XFire最高版本

    在本文中,我们将深入探讨XFire的核心特性、使用场景以及如何利用XFire_v1.99进行Web服务开发。 **一、XFire简介** XFire由Codehaus组织开发,它的设计目标是简化Web服务的创建和使用,提供了一种轻量级、高性能的...

    Spring + Xfire + 注解方式

    在"Demo_Spring_Xfire_Annotation"这个压缩包文件中,很可能包含了示例代码,用于演示如何在Spring和Xfire环境中使用注解来创建、配置和调用Web服务。可能包括以下几个部分: 1. **服务接口**:定义了服务的公共...

    dwr和xfire使用

    虽然DWR主要用于浏览器和服务器之间的直接通信,而XFire是针对Web服务的,但两者可以结合使用。例如,DWR可以用来提供一个友好的用户界面,通过异步调用隐藏在背后的XFire服务,实现复杂的业务逻辑处理。这种方式将...

Global site tag (gtag.js) - Google Analytics