今天整理了一下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了,详细代码可以参考附件
分享到:
相关推荐
7. **配置文件**:分析"webservices"文件,可能包含服务的部署描述符(如web.xml)和其他XFire特定的配置文件,学习如何配置服务的行为和属性。 这个压缩包是一个很好的学习资源,对于想要深入理解Java Web服务和...
- **项目创建**:学习了如何在MyEclipse中创建Web Services项目,并使用XFire自动生成必要的服务文件。 - **部署与测试**:了解了如何将Web Services打包成WAR文件并部署到Tomcat服务器上,同时学会了如何通过浏览器...
【xfire webservices源码】是一个用于理解和学习Web服务实现的开源项目,它基于XFire框架,该框架是Java世界中一个流行的SOAP和RESTful Web服务实现工具。XFire允许开发者快速、简单地构建和部署Web服务。在这个源码...
在Java中,XFire是一个流行的框架,用于快速开发和部署Web服务。本教程将深入讲解如何使用XFire在Java环境中实现Web服务接口的调用,包括内部和外部访问。 一、Web服务简介 Web服务是通过SOAP(Simple Object ...
### 使用XFire开发Web Services详解 #### 一、概述 XFire是一款开源的轻量级Web服务框架,它简化了Web服务的开发过程,使得开发者能够更轻松地创建和使用Web服务。本篇文章将详细介绍如何使用XFire来开发Web ...
在本文中,我们将深入探讨Xfire在Java Web服务开发中的应用,并通过提供的Demo来学习其基本操作。 首先,理解Java Web服务(JWS)的概念至关重要。Java Web服务是一种遵循标准(如SOAP、WSDL和UDDI)的软件,它允许...
在提供的“xFire实现webservices”项目中,你可以找到以下关键部分: 1. **服务接口类**:定义了Web服务的公共方法,通常以`interface`的形式存在。 2. **服务实现类**:实现了接口中的所有方法,是Web服务的实际...
该资源包括两个文件夹一个是webservices xfire框架的客户端,另一个是服务器端,该项目采用的是IDE环境自动生成的,使用的是myeclipse8.6,如果不想使用IDE环境生成就自己下载xfire相应的jar包然后导入,即可自己...
标题“Exporting beans as web services using XFire”指的是利用XFire框架将Java Beans导出为Web服务。在本文中,我们将深入探讨这个主题,并结合标签“源码”和“工具”,来理解如何通过源代码和特定工具实现这一...
Java作为主流的开发语言之一,自然成为了构建Web Services的重要工具。 本文档主要介绍了如何使用XFire框架在Java环境中搭建并部署简单的Web Services应用。XFire是一个基于Java的轻量级Web Services框架,提供了一...
【xfire_webservices】是关于Web服务使用的讨论,涵盖了Web服务的基本概念、涉及的关键技术以及主流的Web服务框架,特别是Apache的XFire框架。Web服务是一种通过Web调用的应用程序接口,允许不同系统间的数据交换和...
【Xfire整合Spring发布Web Services】是将Xfire——一个基于Java的Web服务实现框架,与Spring——一个广泛使用的轻量级应用框架相结合,用于构建和发布Web服务的过程。这个整合使得开发人员能够利用Spring的强大功能...
XFire是一款早期流行的Java Web Services框架,用于开发和部署SOAP服务。它提供了全面的工具集,使得开发者可以方便地创建、测试和管理Web服务。在本文中,我们将深入探讨如何利用XFire用户库包来开发Web Services...
Java 使用 XFire 创建和调用 WebServices 是一个常见的任务,特别是在构建分布式系统和服务导向架构(SOA)中。XFire 是一个 Java 框架,它简化了 WebService 的开发和消费过程。在这个主题中,我们将深入探讨如何...
**XFire-WebServices傻瓜配置** XFire是一款开源的Java Web Services框架,它使得开发者能够轻松地创建和消费Web服务。XFire提供了简洁的API和XML绑定,使其成为开发人员构建基于SOAP的服务的理想选择。在本文档中...
标题中的“eclipse使用xfire开发webservices server”意味着我们将使用Eclipse IDE和XFire来创建和部署一个Web服务服务器。以下是一步步的操作步骤: 1. **安装Eclipse和XFire插件**:首先确保你的Eclipse已经安装...
Java使用XFire实现Web服务(WebServices)是Java开发中的一种常见技术,它允许应用程序通过网络交换数据。XFire是一个轻量级、高性能的框架,它简化了在Java应用程序中创建和消费Web服务的过程。本篇文章将深入探讨...
使用Myeclipse开发基于xfire的Web Services 入门,如何开发Web Services