Java Web 服务: 比较 Metro 与 Axis2 性能

Metro Web 服务堆栈是基于 JAXB 2.x 数据绑定和 JAX-WS 2.x Web 服务标准的参考实现,但它使用额外的组件来提供由 JAX-WS 定义的基本支持以外的特性。WS-Security 与其他 SOAP 扩展技术由 Web Services Interoperability Technologies (WSIT) 项目实施,实际的 WS-Security 处理由另一个附加组件实现:XML and WebServices Security Project (XWSS)。

关于本系列

Web 服务构成了 Java 技术在企业计算应用中的关键部分。在本系列文章中,XML 和 Web 服务顾问 Dennis Sosnoski 介绍了对于使用 Web 服务的 Java 开发人员来说比较重要的主要框架和技术。通过跟随本系列的学习,您将了解到该领域的最新进展,并且知道如何使用它们来为您的编程项目提供帮助。

Axis2 基于完全不同的技术,包括默认的 Axis2 Data Binding (ADB) 数据绑定实现、Axis2 引擎本身,以及用于 WS-Security 支持、联合 Web Services Security for Java (WSS4J) 的 Rampart 模块。本系列较早的一篇文章 “WS-Security 的大开销” 介绍了 Axis2 Web 服务堆栈中 WS-Security 处理对性能的影响。

“Metro 简介” 与 “Metro 服务下的 WS-Security” 向您展示了这两个堆栈在安装、配置以及实际使用上的区别。本文着眼于两者性能上的不同,包括使用 WS-Security 时的不同。

检查性能

和 “WS-Security 的大开销” 一文类似,本文采用以下方法:当客户端和服务器在一个单一系统上运行时,测量执行一个特殊请求序列所需的时间。这种方法在比较 Web 服务处理开销上很有用,因为网络延迟的影响和开销可以从时间结果中排除。假设客户端代码不会比服务器缓慢很多,这个数据就是服务器在负载情况下的实际性能的最好表示。

本文采用和早前文章相同的测试应用程序:一个地震数据检索服务。这个服务采用一个实际的数据库,它包含在一段时间内在全世界发生的 93,000 多次地震的记录。该服务的请求指定一个时间范围和一个地理坐标范围,然后服务返回指定范围内的所有地震信息。参阅 “WS-Security 的大开销” 了解更多详细信息和一个请求-响应消息对示例。

正如之前的文章所述,有两组请求序列用于性能测试。第一组使用 1,000 条请求,通过调整过的查询参数来找到整个地震数据库中匹配的一小部分(对这 1,000 条请求仅返回 816 个匹配的地震)。第二组用 100 条请求进行调整,找到数据库中匹配的一大部分(对这 100 条请求返回 176,745 个匹配地震)。每个请求序列在不同的安全配置条件下进行多次运行,只有每个配置下最好的一次能够保存在结果中。

测试在配备 Athlon X2 5400+ 处理器和 4 GB 的 RAM 的 Mandriva 2009.1 64-bit Linux 系统中运行,使用一个 Sun Java 1.6.0_13 32-bit JVM (对于给定的堆大小,它比 64-bit JVM 有更好的性能)。服务器代码在 Tomcat 6.0.20 上运行,配置使用 1024 MB 的堆,而客户端代码使用 512 MB 的堆。Web 服务堆栈的版本是 Metro 1.5 (它包含有 WSIT 和 XWSS),以及有当前版本 Rampart 代码的 Axis2 1.5.1 (因为还没有和 Axis2 1.5.x 代码匹配的 Rampart 发布)。

早前的文章只检查 Axis2 的性能,包含纯文本、SSL 和各种 WS-Security/WS-SecureConversation 配置。本文使用一组更有限的配置,但直接对比各配置下 Axis2 和 Metro 的性能。

未使用 WS-Security 时的性能

图 1 显示了没有任何 WS-Security 使用时 Axis2 和 Metro 两者测量到的测试时间。该图表显示这两个堆栈之间只有微小差别。在有 1,000 条指令和较少响应的测试中,Metro 比 Axis2 快 0.5 秒。在有 100 条请求和较多响应的测试中,两个堆栈是一样快(在 0.1 秒内)。

图 1. 没有安全设置时的测试时间

这些时间结果显示(对测试应用程序所用的数据)Metro 在处理每条请求的时间上,可能比 Axis2 稍快,但是在实际数据会话时它们不相上下(当使用和 Axis2 绑定的默认 ADB 数据时 — 其他数据绑定可能有不同结果,特别是 XMLBeans 绑定,它要慢很多)。

时间: 2024-05-13 05:29:07

Java Web 服务: 比较 Metro 与 Axis2 性能的相关文章

Java Web服务: WS-SecureConversation性能

看看 Web 服务栈 WS-SecureConversation 性能相比较有何不同 简介:WS-SecureConversation 能让您保证正在进行的 Web 服务消息交换的安全,同时花费比普通 WS-Security 更少的处理开销.在本文中,您将学习如何配置 WS-SecureConversation 并将其用于三个 主要的开源 Java Web 服务栈:Apache Axis2.Metro 和 Apache CXF.还将看到这三个栈的 WS -SecureConversation 性

Java Web服务: WS-Trust和WS-SecureConversation

了解 WS-SecureConversation 如何能改善 Web 服务的安全性能 简介:WS-Security 为 SOAP 消息交换添加了企业级的安全特性,但却有大量的性能损失.WS-Trust 构建于 WS-Security 基础上,提供了一种交换安全令牌的方式,WS-SecureConversation 构建于 WS-Security 和 WS-Trust 基础上,改善了进行中的消息交换的性能.Dennis Sosnoski 将继续他的 Java Web 服务 专栏系列,本期文章将介绍

Java Web服务: CXF性能比较

简介:Apache CXF 与 Apache Axis2 及 Metro 共享一些底层组件,但在完全不同的架构中结合了这 些组合.Dennis Sosnoski 将继续他的 Java Web 服务 专栏,比较 CXF.Metro 和 Axis2 栈在有无 WS -Security 的情况下的性能表现. Apache CXF Web 服务栈建立在与本系列早期文章讨论的 Apache Axis2 及 Metro 栈相同的一些技术 的基础之上.与 Axis2 类似,它使用 Apache WSS4J W

Java Web服务,第3部分: Axis2数据绑定

相关文章: Java Web服务,第1部分: Java Web服务在未来一年内的发展 Java Web服务,第2部分: 深度探索Axis2:AXIOM Apache Axis2 Web 服务框架一开始就设计用于支持多种 XML 数据绑定方法.当前的版本 提供对 XMLBeans 和 JiBX 数据绑定以及专门针对 Axis2 开发的自定义 Axis 数据绑定 (Axis Data Binding,ADB)的全面支持.本文将说明如何将这些不同的数据绑定方法与 Axis2 结合使用,并说明为什么可能

实例jie如何提高Java Web 服务性能优化实践

本文介绍如何提升 Java Web 服务性能,主要介绍了三种方法:一是采用 Web 服务的异步调用,二是引入 Web 服务批处理模式,三是压缩 SOAP 消息.重点介绍在编程过程中如何使用异步 Web 服务以及异步调用和同步调用的差异点.本文还示范了如何在项目中使用以上三种方法,以及各种方法所适合的应用场景. Java Web 服务简介 Web 服务是一种面向服务架构的技术,通过标准的 Web 协议提供服务,目的是保证不同平台的应用服务可以互操作.Web 服务(Web Service)是基于 X

Java Web服务,第1部分: Java Web服务在未来一年内的发展

2006 年将是 Web 服务(特别是 Java Web 服务)发展标志性的一年.新的第三代框架即将撩开面纱,这些框架将为 doc/lit SOAP 提供更好的支持,并能带来潜在的性能提高.同时,第四代 WS-* 标准也最终开始形成一组可互操作的层,对 SOAP 和 WSDL 进行扩展,以支持核心企业需求. 这篇文章是我的 Java Web 系列的第 1 部分,我将讨论以下 Web 服务目前的状态和在 2006 年即将发生的主要变化,并将简单说明新框架和技术如何相关和交互.后续文章将深入讨论其中

部署Java Web服务

引言 在过去数年里,随着万维网联盟(World Wide Web Consortium,W3C)更新了核心规范,并引入了弥补 Web服务最初缺陷的新规范,Web服务发生了大量的变化.W3C 的Web Services Activity 小组所维护的规范以独立于供应商的方式将 Web服务作为一组 XML 规范进行处理. 同时,Java Community Process (JCP) 也在维护自己的规范集,以将 W3C 的建议合并到 Java 语言中.Java APIs for XML(JAX-RP

Java Web服务: Metro简介

Metro Web 服务栈是由 Sun Microsystems 开发的一个开源工具.它将 JAXB 2.x 数据绑定和 JAX-WS 2.x Web 服务标准的参考实现与其他与 XML 相关的 Java 标准相结合.Metro 还包括一些附加组件,以 支持基本 JAX-WS 服务的定义和使用以及 SOAP 消息交换的各种 WS-* 扩展. Metro 既可以用作独立的 Web 服务栈,也可以用作开源 Glassfish 应用服务器中的集成组件.如果 使用 Glassfish,尤其是在拥有配置基

Java Web服务,第2部分: 深度探索Axis2:AXIOM

为什么需要另一种文档模型? Apache Axis2 1.1 已经发布,它为那些长期运行 Apache Web 服务框架系列的忠实用户提供了令人兴奋的新特性.我们将在后续的文章中讨论关于 Axis2 的内容,本文将深入研究 AXIs 对象模型 (AXIOM) XML 文档模型,这是 Axis2 的核心.AXIOM 是 Axis2 中一个主要的创新,并且是 Axis2 能够比原来的 Axis 提供更好性能的原因之一.本文将向您介绍 AXIOM 的工作原理.Axis2 的各个部分如何构建于 AXIO