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简介 Xfire是一个轻量级的、基于Java的Web服务框架,它提供了一种简单而高效的方式来构建和消费Web服务。Xfire的设计目标是使开发人员能够快速地创建出高性能、可...
【标题】:“Web服务与Spring整合——XFire实战” 【描述】:这篇博客文章通过一个实际的案例,探讨了如何将Web服务与Spring框架相结合,使用XFire进行开发。XFire是Spring框架早期用于实现Web服务的一个库,它提供...
4. "Xfire实战[Web服务开发之旅].pdf" - 这可能是一个实战案例集,通过具体的项目实例,帮助读者理解如何在实际开发中运用Xfire。 5. "Axis Webservice开发.pdf" - 这个文档应该是关于使用Axis开发Web服务的详细指南...
《xFire深度解析与实战指南》 xFire,作为一个历史悠久的Web服务框架,它在早期的Web服务开发中扮演了重要角色。本文将深入探讨xFire的使用方法、实例演示,以及如何将其与Spring框架集成,帮助开发者更好地理解和...
《Xfire服务端Demo详解与实战》 Xfire是一款基于Java技术构建的Web服务框架,专为开发高质量、高性能的Web服务而设计。在本文中,我们将深入探讨Xfire服务端Demo,理解其核心概念、功能特性,并通过具体的代码示例...
【实战Mule:利用Mule调用XFire发布的Web服务】这一主题主要涵盖了两个核心概念:Mule ESB(企业服务总线)和XFire,它们都是在IT领域中的重要工具,尤其在分布式系统和集成解决方案中发挥着关键作用。 Mule ESB是一...
总的来说,这个实例是一个典型的Java企业级应用的实战案例,演示了如何利用xfire创建Web服务,通过Spring进行组件管理和事务控制,以及使用Hibernate进行数据库操作。对于想要深入理解这些技术以及它们在Web服务中的...
这个文档很可能是详细介绍了上述概念和步骤的实战指南,包括具体的代码示例、配置样例以及可能遇到的问题和解决方案。通过阅读这份文档,开发者可以深入了解如何在实际项目中结合XFire和WS-Security,以构建安全的...
本文将基于"实战Mule:利用Mule调用XFire发布的文件上传服务"这一主题,详细阐述如何利用这两个工具实现文件上传服务的集成。 首先,我们需要理解Mule ESB的核心概念。Mule ESB提供了一个灵活且可扩展的架构,用于...
SSH(Struts2 + Spring + Hibernate)是一种常见的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。...对于初学者,这是一个很好的实战练习,可以帮助他们理解和掌握这些技术的综合运用。
《MyEclipse实战开发讲解入门XFire.Web.Service.入门》 在IT行业中,MyEclipse作为一款强大的Java集成开发环境,被广泛应用于企业级应用的开发。本资源包旨在为初学者提供一个全面的MyEclipse实战开发指南,特别是...
#### 实战步骤详解 ##### 第一步:创建项目 1. **启动MyEclipse**:确保MyEclipse软件已经安装并且可以正常启动。 2. **新建Java项目**:通过`File -> New -> Project…`创建新的Java项目,命名为`JavaWS`。 3. **...
7. **实战项目**:创建一个实际应用,如一个桌面小工具,实时显示 Xfire 用户的游戏状态。 通过这份电子书,读者应该能够掌握 Axis 与 Xfire 结合使用的基本概念和技术,从而有能力开发自己的 Web 服务客户端或集成...
《XFire1.2实战解析》 XFire是一款在Java平台上流行的开源服务框架,它主要用于构建分布式系统和服务。本文将围绕XFire1.2版本,通过一个实际的使用例子,深入探讨其核心功能和应用场景。 首先,理解XFire的核心...
9. 实战案例:可能通过一个实际的游戏通信场景,展示如何使用Websocket实现玩家之间的实时交互。 由于具体博文内容未知,以上内容只能根据标题、标签和压缩包文件名进行推测。若要了解更多详细信息,需访问博文链接...
- **CXF实用手册.pdf**:此手册涵盖了CXF的全面知识,从安装配置到实战案例,深入浅出地讲解了如何利用CXF构建和管理WebService,是CXF开发者的重要参考文献。 通过以上内容,你可以全面了解并掌握WebService的基础...
【XFire:Java SOAP 框架详解及MyEclipse实战】 XFire是Java开发者用于构建Web服务的一个开源SOAP框架,它提供了轻量级的信息处理模块,并利用STAX(Streaming API for XML)来处理SOAP消息。XFire不仅支持简单的...