XFire 概述
XFire 是 codeHaus 组织提供的一个开源框架,它构建了 POJO 和 SOA
之间的桥梁,主要特性就是支持将 POJO 通过非常简单的方式发布成 Web 服务,这种处理方式不仅充分发挥了 POJO 的作用,简化了 Java
应用转化为 Web 服务的步骤和过程,也直接降低了 SOA 的实现难度,为企业转向 SOA 架构提供了一种简单可行的方式。
XFire 目前最新的版本是 1.2.2,目前支持的特性主要包括:
- 支持将 Web 服务绑定到 POJO、XMLBeans、JAXB1.1、JAXB2.0 和 Castor;
- 支持基于 HTTP、JMS、XMPP 等多种协议访问 Web 服务;
- 支持多种 Web 服务业界重要标准如 SOAP、WSDL、Web 服务寻址(WS-Addressing)、Web 服务安全(WS-Security)等;
- 支持 JSR181,可以通过 JDK5 配置 Web 服务;
- 高性能的 SOAP 实现;
- 服务器端、客户端代码辅助生成;
- 对 Spring、Pico、Plexus 等项目的支持等。
XFire 安装包
XFire 框架目前的最新版本是 1.2.6,可以访问 xfire.codehaus.org 下载 XFire
框架的安装包,下载时请选择“全部二进制发布包(Binary Distribution in zip package)”,而不仅仅是“XFire
jar 文件(Jar of all XFire modules)”。
下载完成后,我们可以将下载的 .zip 文件解压缩到任意的文件夹中(后面的章节中使用 % XFIRE_HOME % 表示 XFire 框架的安装目录),解压缩后形成的文件目录结构如下:
-
api(目录)
api 目录中是 XFire 框架中所有类(class)对应的 API 文档,为开发者使用 XFire 完成应用开发提供帮助。
-
examples(目录)
examples 目录中包含了所有随 XFire 二进制包发布的实例,包括这些实例的源代码和相关 Web 应用配置内容。
-
lib(目录)
lib 目录中包含 XFire 运行所需要的外部支持类包(.jar文件),可以根据不同项目所需的 XFire 特性选择所需要的支持类包。保守的方法是在 Web 项目中包含所有的外部支持类包(.jar文件)。
-
manual(目录)
manual 目录中包含有 XFire 框架的帮助文档,开发者可以从这些帮助文档中学习更多运用 XFire 框架实现 SOA 的知识和技巧。
-
modules(目录)
modules 目录中包含了 XFire 框架根据不同特性分别编译的二进制包文件。发布基于 XFire 框架的 Web 项目时,可以选择使用该目录下的所有 .jar 文件,也可以选择 XFire-all-1.2.6.jar 文件。
-
XFire-all-1.2.6.jar
XFire 框架的二进制包文件,包含了全部的模块(modules)。
-
LICENSE.txt
LICENSE.txt 文件中包含了 XFire 框架的授权协议。
-
NOTICE.txt
-
README.txt
这两个文件中包含了 XFire 发布时的一些有用的信息。
XFire 框架支撑环境
XFire框架是一种基于Servlet技术的SOA应用开发框架,要正常运行基于XFire应用框架开发的企业应用,除了XFire框架本身之外,还需要JDK和Servlet容器的支持。
1.JDK 版本选择、下载和安装
XFire 支持非常多的特性,其中不同的特性对 JDK 版本的要求有所不同,比如如果项目中选择基于 JSR181
标准发布 Web 服务,我们就需要选择 JDK5 或者以上版本,如果仅仅选择将 Web 服务绑定到最简单的 POJO,我们只需要选择
JDK1.4 版本即可。
JDK 各版本均可以在 java.sun.com
网站上下载,如何安装 JDK 请参考 SUN 公司的相关技术文档和 JDK 的帮助文档。
2.Servlet 容器下载和安装
XFire 是一种基于 Servlet 技术的 SOA 应用开发框架,需要 Servlet 容器的支持。XFire
支持在多种 Servlet 容器中运行,包括 Websphere、Weblogic、TOMCAT 等。为了说明的简单,我们选择使用
TOMCAT(版本5.0.30)作为 XFire 的运行容器,所有配置过程和发布步骤的说明也均是针对 TOMCAT,如果读者使用 TOMCAT
之外的其它 Servlet 容器或者选择了 TOMCAT 的其它版本,下面的配置过程和步骤可能需要做出调整,请读者根据实际 Servlet
容器的帮助文档进行相应调整。
TOMCAT 各版本均可以在 tomcat.apache.org
网站上下载,如何正确安装 TOMCAT 服务器请参考 TOMCAT 服务器的帮助文档。
3.xalan
XFire 需要 xalan 项目的支持,然而 1.2.6 版本中并没有带有相应的 jar 文件,因此请访问 xml.apache.org
,下载 xalan 项目的二进制包。
XFire 应用配置
笔者使用eclipse进行开发 :首先将解压xfire文件中的lib目录下的jar复制到你项目的lib目录中,然后再将xfire根目录中的xfire-all-1.2.6.jar复制其中。然后我们在src目录中新建META-INF/xfire/services.xml 如图:
然后我们新建接口Calculator
package com.langsin.ws;
import java.util.List;
import com.langsin.bean.Person;
public interface Calculator
{
public int add(int a, int b);
public int subtract(int a, int b);
public int multiply(int a, int b);
public int divide(int a, int b);
public Person changePerson(Person person);
public List<Person> changePersons(List<Person> list);
}
并建立实行类:CalculatorImpl
public class CalculatorImpl implements Calculator
{
public int add(int a, int b)
{
System.out.println("add invoked");
try {
Class.forName("com.mysql.jdbc.Driver");
DriverManager drive=(DriverManager) DriverManager.getConnection("","", null);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return a + b;
}
public int subtract(int a, int b)
{
System.out.println("subtract invoked");
return a - b;
}
public int multiply(int a, int b)
{
System.out.println("multiply invoked");
return a * b;
}
public int divide(int a, int b)
{
System.out.println("divide invoked");
return a / b;
}
public Person changePerson(Person person)
{
Person result = new Person();
result.setUsername("hello: " + person.getUsername());
result.setPassword("world: " + person.getPassword());
return result;
}
public List<Person> changePersons(List<Person> list)
{
List<Person> result = new ArrayList<Person>();
Person p = null;
for(Person person : list)
{
p = new Person();
p.setUsername("hello: " + person.getUsername());
p.setPassword("world: " + person.getPassword());
result.add(p);
}
return result;
}
}
并在文件中加入:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>CalculatorService</name> //webservice的名字
<serviceClass>com.langsin.ws.Calculator</serviceClass> //接口的名字
<implementationClass>com.langsin.ws.impl.CalculatorImpl</implementationClass> //实行类的名字
</service>
</beans>
然后再web.xml文件中加入:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>
</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>
如图:
在web.xml中我们配置了 <url-pattern>/servlet/XFireServlet/*</url-pattern>, <url-pattern>/services/*</url-pattern>
这时我们启动tomcat,输入:http://localhost/ws/services/ 如图:
这时服务器端已经开发完成:
那么下面我们对客户端进行开发:
public
class
Client
{
13
14
public
static
void
main(String[] args)
{
15
16
Service srvcModel
=
new
ObjectServiceFactory()
17
.create(
Calculator.
class
);
18
XFireProxyFactory factory
=
new
XFireProxyFactory(XFireFactory
19
.newInstance().getXFire());
20
21
String
CalculatorService
URL
=
"
http://localhost/ws/services/CalculatorService?wsdl
"
;
22
23
Calculator
calculator
=
(
Calculator
) factory.create(srvcModel,
CalculatorService
URL
);
25
calculator
.add(1,2)
;
45
46
}
47
48
}
- 大小: 4.3 KB
- 大小: 12.3 KB
- 大小: 8.2 KB
分享到:
相关推荐
《Xfire全方位解析:1.2.6版本的全面探讨》 Xfire,这款曾经在游戏社区中广受欢迎的即时通讯软件,以其独特的游戏整合功能和社交特性,为玩家提供了便捷的游戏内通信和社区交流平台。本文将深入探讨Xfire 1.2.6这一...
在本案例中,"Xfire的client.zip"是一个包含了Xfire客户端代码的压缩包,主要用于调用Web服务。 Xfire客户端代码是实现与Xfire服务器通信的代码库,它可能包含了多种语言的实现,如Java、C#或Python等。这些代码...
xfire是一个早期流行的开源Web服务框架,主要用于构建SOAP(简单对象访问协议)和RESTful(Representational State Transfer)服务。这个框架使得Java开发者能够轻松地创建、部署和消费Web服务。xfire依赖于一系列的...
【XFire创建的WebService】是基于Java平台的开源框架,用于构建和消费Web服务。它在Web服务领域提供了一个轻量级、高性能的选择,尤其适合快速开发。在本例中,我们将探讨如何使用XFire来创建一个简单的WebService...
【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...
XFire,全称为XML Fire,是一款历史悠久的开源Java框架,主要用作服务导向架构(SOA)中的Web服务实现工具。它允许开发者快速构建、部署和管理基于HTTP的服务,支持SOAP和RESTful通信协议。在Java开发中,XFire通过...
【xfire myeclipse10包】是一款专为MyEclipse10集成开发环境设计的XFire插件安装包。XFire是一款强大的Java Web服务框架,它提供了对Web服务的全面支持,包括创建、部署和消费Web服务的能力。在MyEclipse这样的集成...
"Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...
在IT行业中,集成框架是开发复杂应用程序的关键,Spring和XFire就是两个重要的工具。Spring作为一个强大的Java企业级应用开发框架,提供了丰富的功能,包括依赖注入、面向切面编程(AOP)以及各种服务管理。而XFire...
"xfire+spring+安全认证"的主题聚焦于如何利用XFire和Spring框架来实现安全的Web服务。XFire是一个用于创建、消费和部署SOAP Web服务的Java库,而Spring框架则是一个广泛使用的全功能应用开发框架,提供了包括安全性...
1、以下四个类调用了XmlSchema-1.1.jar包 因与cxf包xmlschema-core-*.jar... xfire-all-1.2.6-incomplete.jar 替换 xfire-all-1.2.6.jar 3、XmlSchema-1.1.jar 可以与 xmlschema-core-*.jar 共存避开同路径同名类冲突
Xfire是一款曾经流行的开源Java框架,用于构建和消费Web服务。在本文中,我们将深入探讨Xfire调用Web服务时遇到的参数传递问题以及解决策略。 首先,让我们了解Web服务的基本概念。Web服务基于SOAP(Simple Object ...
1、以下四个类调用了XmlSchema-1.1.jar包 因与cxf包xmlschema-core-*.jar... xfire-all-1.2.6-incomplete.jar 替换 xfire-all-1.2.6.jar 3、XmlSchema-1.1.jar 可以与 xmlschema-core-*.jar 共存避开同路径同名类冲突
在Java开发中,有时我们可能需要整合不同的框架或者库,比如Apache CXF和XFire,这两个都是用于构建Web服务的框架。然而,由于它们都包含了处理XML Schema(XmlSchema)的相关组件,可能会出现jar包冲突的问题,导致...
XFire(现已被Apache CXF项目合并)是一个Java框架,它支持SOAP(Simple Object Access Protocol)和WS-*规范,帮助开发者构建和消费Web服务。 本文将详细介绍如何使用XFire根据WSDL文件生成客户端代码,以便快速地...
Spring 和 XFire 的集成是构建基于 SOAP 的 Web 服务的一种高效方法。XFire 是一个 Java 框架,专门用于创建和消费 Web 服务,而 Spring 框架则提供了全面的企业级应用开发支持。将这两者结合可以利用 Spring 的强大...
xfire客户端jar包是用于构建Web服务客户端的一个关键组件,它是Apache CXF项目早期的版本。Apache CXF是一个流行的开源框架,它支持多种Web服务标准,包括SOAP、RESTful API和WS-*规范。xfire-jar包包含了实现这些...
《Xfire:构建Web服务的关键组件》 在IT行业中,Web服务已经成为企业级应用集成、数据交换和跨系统通信的核心技术。Xfire,一个历史悠久的Java库,是开发者们构建Web服务的重要工具,特别是对于那些熟悉Java环境的...
Spring 和 XFire 是一个经典的组合,用于在Java应用程序中创建和消费Web服务。Spring作为一个强大的框架,提供了全面的依赖注入和面向切面编程能力,而XFire是早先的Web服务实现,它允许开发者轻松地将Java接口转换...