Welcome 微信登录

首页 / 软件开发 / JAVA / Java Web服务: CXF性能比较

Java Web服务: CXF性能比较2011-10-16 IBM Dennis Sosnoski简介:Apache CXF 与 Apache Axis2 及 Metro 共享一些底层组件,但在完全不同的架构中结合了这 些组合。Dennis Sosnoski 将继续他的 Java Web 服务 专栏,比较 CXF、Metro 和 Axis2 栈在有无 WS -Security 的情况下的性能表现。

Apache CXF Web 服务栈建立在与本系列早期文章讨论的 Apache Axis2 及 Metro 栈相同的一些技术 的基础之上。与 Axis2 类似,它使用 Apache WSS4J WS-Security 实现。与 Metro 类似,它主要使用 JAX-WS 2.x Web 服务配置和 JAXB 2.x 数据绑定(甚至使用与 Metro 相同的 JAXB 实现,但两个栈的版 本不同)。但是,除了这些公共组件之外,各栈之间的差异还包括它们的处理引擎和 WS-SecurityPolicy 配置处理。

本系列的早期文章比较了 Axis2 与 Metro 的性能,包括在不同 WS-Security 配置下的简单消息交换 。在本文中,您将了解 CXF 与 Axis2 及 Metro 最新发行版之间的性能比较。

性能概述

与之前介绍 Web 服务性能的文章 — “WS-Security 的大开销” 和 “比较 Metro 与 Axis2 性能” — 相同,本文将测量当客户机与服务器在单一系统中运行时执行特 定请求序列所需的时间。这种方法将多次比较 Web 服务 处理 开销,因为它可以消除网络延时和计时造 成的开销。假定客户机代码没有明显慢于服务器,因此这些数据可以表示实际服务器在高负荷下的性能。

本文还将使用与早期文章相同的测试应用程序,即一个地震数据检索服务。该服务所使用的数据库中 包含全球范围多年以来内发生的超过 93,000 次地震的数据。服务请求将指定时间范围和坐标范围,而服 务将返回范围内的所有地震。请参阅 “WS-Security 的大开销”,了解关于测试应用程序和 示例请求/响应消息对的完整信息。

与之前的文章相同,我们将使用两组请求序列来进行性能测试 。第一组使用 1,000 个请求,并调整查询参数以匹配整个地震数据库的小部分数据(在 1,000 个请求中 ,仅返回 816 个匹配的地震条目)。第二组使用 100 个请求,并通过调整使它匹配数据库中的较大部分 内容(在 100 个请求中,返回 176,745 个匹配的地震条目)。这两个请求序列强调了 Web 服务栈的不 同性能特性。第一个序列显示了栈使用少量数据处理请求的速度,而第二个序列则强调了处理数据量的速 度。每个请求序列都使用不同的安全配置运行了多次,结果中仅记录各配置表现最好的数据。

运 行测试的硬件和软件条件是:Mandriva 2009.1 64 位 Linux 系统,Athlon X2 5400+ 处理器和 4GB 内 存,使用 Sun (Oracle) Java 1.6.0_18 32-bit JVM(对于特定的堆大小来说,它的性能稍微好于 64 位 )。服务器代码运行在 Tomcat 6.0.20 上,经配置将使用 1024MB 大小的堆,而客户机代码则使用 512MB 大小的堆。Web 服务栈版本如下:

CXF 2.1.7

Metro 2.0

Axis2 1.5.1,以及 Rampart 1.5 发行版

如果您希望尝试 在自己的机器和 JVM 上进行测试,那么请 下载代码(http://www.ibm.com/developerworks/cn/java/j -jws14/index.html#download)。