- 浏览: 316535 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
完善自我:
支持一下!
揭秘IT人才特点:中美印日四国程序员比较 -
悲剧了:
好文,看玩thinking in java的提到的异常处理,看 ...
高效的Java异常处理框架(转) -
yin_bp:
开源框架bbossgroups页支持组件异步方法调用哦,详情请 ...
Spring 3中异步方法调用 -
flyjava:
sun的悲哀
Apache怒了,威胁说要离开JCP
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)(见 参考资料 )。
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 发布)。如果您想要在自己的硬件和 JVM 上尝试这个测试,请 下载 该代码。
早前的文章只检查 Axis2 的性能,包含纯文本、SSL 和各种 WS-Security/WS-SecureConversation 配置。本文使用一组更有限的配置,但直接对比各配置下 Axis2 和 Metro 的性能。
图 1 显示了没有任何 WS-Security 使用时 Axis2 和 Metro 两者测量到的测试时间。该图表显示这两个堆栈之间只有微小差别。在有 1,000 条指令和较少响应的测试中,Metro 比 Axis2 快 0.5 秒。在有 100 条请求和较多响应的测试中,两个堆栈是一样快(在 0.1 秒内)。
图 1. 没有安全设置时的测试时间
这些时间结果显示(对测试应用程序所用的数据)Metro 在处理每条请求的时间上,可能比 Axis2
稍快,但是在实际数据会话时它们不相上下(当使用和 Axis2 绑定的默认 ADB 数据时 — 其他数据绑定可能有不同结果,特别是
XMLBeans 绑定,它要慢很多)。
随后的两组数据显示了遵循安全配置的相对测试时间:
- plain — 无安全性(和 图 1 中值相同,但针对 Axis2 的时间规范化)
-
username
— 在请求上的 WS-Security 纯文本
UsernameToken
- sign — 有时间戳的 WS-Security 头部和主体签名
- signencr — 有时间戳和主体加密的 WS-Security 主体和头部签名
图 2 和 图 3 以 Axis2 一般时间的倍数显示测量到的时间,方便比较结果。图 2 显示了有较少响应的 1,000 条请求的时间:
图 3 显示了有较多响应的 100 条请求的时间:
Metro 在 WS-Security 配置下要比 Axis2 快两倍,在大消息的 username 和 sign 配置下要快三倍以上。这对处于同一成熟度上的两 Web 服务堆栈是个惊人的结果。
Rampart 有使用 org.apache.rampart.TIME
日志程序的基本内置时间日志。通过在 DEBUG
级别启用这个日志程序,您会发现 Rampart 处理的各个部分所需的时钟时间。奇怪的是,当我对签名例子这么做时,我发现 Rampart
处理时间只占了测试所需总时间的不到一半。这表示 Axis2/Rampart WS-Security 处理的主要性能问题不在于 Rampart
和底层 WSS4J 安全的实现。
Rampart 肯定还有很多改进的空间。正如 “WS-Security 的大开销
” 中提到的,Rampart 并没有在 WS-Security 参与进来的任何时候构建一个完整的消息内存模型(in-memory model)。构建内存模型的开销就是在 UsernameToken
例子中 Axis2/Rampart 表现不佳的明显原因。Axis2/Rampart 在其它 WS-Security 场景中表现不佳的原因也可能和这种类似的转换问题相关。
Metro 的独立使用配置可能比较古怪,特别是考虑到有限的文档可用性(见 参考资料 )。 Metro 也只能与 JAXB 2.x 数据绑定和 JAX-WS 2.x Web 服务配置一起使用,和 Axis2 支持的更大范围数据绑定和替代配置刚好相反。但 Metro 对纯文本信息交换提供和 Axis2 一样的性能,在使用 WS-Security 时还有比 Axis2 更好的性能。如果您正在使用 WS-Security,并且关注性能,您应该考虑在您的应用程序中使用 Metro。
下一篇文章将转为介绍 CXF Web 服务堆栈 —— 另一个 Apache Foundation 项目。CXF 使用和 Axis2 相同的部分底层组件,但在配置和部署 Web 服务方面却截然不同。您将了解到 CXF 的基本用途,以及它和 Axis2、Metro 的区别。
原文:http://www.ibm.com/developerworks/cn/java/j-jws11/index.html
发表评论
-
WS-I闭关,这对WS-*意味着什么?
2010-11-15 21:19 951观点 :Web Services互操作组织(WS-I) 刚 ... -
EDA 和 SOA 的融合以及实践
2010-11-08 09:55 1036EDA 和 SOA SOA 简介 ... -
REST vs. SOAP
2010-11-04 17:08 1790看起来在web API协议之争(如果曾经有过)中,潮流正稳步的 ... -
SOA分析和设计中的错误处理要点
2010-10-24 23:51 1078在SOA分析和设计阶段进行全面的错误处理需求分析对于正确完成设 ... -
WebSphere Message Broker 开发和部署最佳实践
2010-10-23 18:24 2324简介: 本文以多个客户企业的经验为基础,给出了使用 Web ... -
带附件的 SOAP 消息
2010-09-30 15:16 1316简介: 本 文介绍了一种在 MIME Multipa ... -
利用 Geronimo 2.2 创建安全的 Web Service 应用
2010-09-30 14:49 1017简介: 随着 Web Service ... -
大学内的云计算解决方案
2010-09-29 14:16 1729本文通过使用一个 Virtual Computing Lab ... -
整合 WebSphere ILOG JRules 与 IBM Content Manager Enterprise Edition
2010-09-28 10:30 2193简介: 自动决策在内 ... -
评估企业是否适合开发复合业务服务
2010-09-27 17:01 1064本文介绍如何评估一个 ... -
集成 IBM 元数据存储库,第 2 部分: 在 WebSphere Service Registry and Repository 中治理元数据生命周期
2010-09-27 16:55 1094通过将您的应用程序与 IBM® Rational® Asset ... -
集成 IBM 元数据存储库,第 1 部: APIs for accessing Rational Asset Manager
2010-09-27 16:52 962通过将您的应用程序与 IBM® Rational® Asset ... -
不使用客户端证书的 WS-Security
2010-09-27 15:42 1345许多 WS-Security 配置要 ... -
CXF 性能比较
2010-09-27 15:15 1680Apache CXF Web 服务栈建立在与本系列早期文章讨论 ... -
通过 CXF 使用 WS-Security
2010-09-27 15:11 2776与 本系列 前面的文章 ... -
CXF 简介
2010-09-27 15:07 4342Apache CXF Web 服务堆栈是来自 Apache ... -
Metro 服务下的 WS-Security
2010-09-27 15:00 1304本文展示如何通过 Metro 来使用和配置 WS-Securi ... -
Metro 简介
2010-09-27 14:52 1985Metro Web 服务栈是由 Sun M ... -
Axis2 中的 JAXB 和 JAX-WS
2010-09-27 10:38 1707早期的 Apache Axis 建立在第一个面向 Web 服务 ... -
WS-Security 的细粒度使用
2010-09-27 10:34 1149在简单 Web 服务环境中 ...
相关推荐
- 在没有WS-Security的情况下,Axis2、Metro和CXF的性能相近,主要取决于XML数据转换的速度。CXF和Metro使用JAXB,而Axis2使用ADB,但三者表现相当。 - 当涉及到WS-Security时,性能差距显现。在响应较少的场景...
性能对比方面,根据提供的资料,CXF在无WS-Security的性能测试中与Axis2和Metro相当。但在使用WS-Security时,CXF明显优于Axis2,尤其是在处理大量响应时,性能差距更为显著。这意味着在安全性要求较高的场景下,CXF...
他将比较Metro与Apache Axis2的异同,后者也是一个流行的Web服务框架,但与Metro相比,其支持的技术更为广泛,特别是XML数据绑定领域。 尽管Metro和Axis2都能从Java代码或WSDL开始构建Web服务,但它们的实现方式...
此外,尽管Axis1是一个成熟的工具,但随着技术的发展,JAX-WS的其他实现如Apache CXF和Glassfish Metro等已经提供了更强大的功能和更好的性能。因此,在选择Web Service框架时,应根据项目需求和技术支持来决定。 ...
1. Java的webService实现本身就是一个很耗性能的实现方案(xml与java对象之间在服务端以及客户端的互转比较消耗性能) 2. 目前java主流的webService应用以CXF、AXIS2为主; 3. 通过网络渠道的了解,目前CXF的效率要比...
5. Axis2或Metro:这些是Java中的Web Service框架,提供了更高级别的抽象,简化了Web服务的开发和部署。 在实际应用中,一个简单的Web Service实例可能包括以下步骤: 1. 定义服务接口:使用Java接口来定义服务的...
Axis2则是另一个类似的框架,专注于提供高性能和可扩展性。而Metro是Java EE环境中常用的WebService实现,特别适合在GlassFish应用服务器上使用。 此外,"xml"文件可能包含WSDL文件,这是定义WebService接口的规范...
2. **axis-1.4.jar** Axis是Apache组织开发的一个开源SOAP库,它是JAX-WS的一个早期实现。尽管JAX-WS标准后来取代了Axis,但在某些旧项目或特定场景下,Axis仍然被用作服务端的支撑库。Axis提供服务部署、WSDL生成...
可以使用Apache Axis、JAX-WS(如Metro)或者CXF等工具来完成这个步骤。这些工具会根据WSDL生成与Web服务对应的Java类,使得我们可以像调用本地方法一样调用远程Web服务。 4. **设置依赖库**: 需要在Java项目中...
Java语言对SOAP-based Web Service提供了支持,例如通过JAX-WS(Java API for XML Web Services),并有Axis、CXF和Metro等主流实现。这些实现具有不同的性能和易用性特点,如Metro在性能和开发测试方面表现最佳。 ...
5. **互操作性**:CXF的强项之一是其良好的互操作性,它可以与其他Web服务框架,如 Axis、Geronimo 和 Metro 等无缝协作。 6. **插件架构**:CXF的模块化设计允许开发者通过插件扩展其功能,例如添加新的数据绑定...
2. **Web服务的开发**:讲解如何使用Java API for XML Processing (JAXP)、Java API for XML Web Services (JAXWS)以及可能的 Axis 或 Metro 框架在WebLogic Server上创建Web服务。这可能包括定义服务接口、实现服务...
例如,Apache Axis和CXF提供了代码生成工具,可以从WSDL文件自动生成服务端和客户端代码,而GlassFish Metro是Oracle提供的一个全功能的JAX-WS实现。 在JavaWeb项目中,将这些Jar包整合进类路径,开发者就可以轻松...
5. **使用SOAP绑定**:Java提供了一些库,如Apache CXF、 Axis2 和 Metro,它们可以帮助我们创建SOAP服务并处理与SOAP相关的细节。这些库通常支持JAX-WS(Java API for XML Web Services),这是一种标准API,用于...
- **Axis2**或**Metro**:这些是常用的JAX-WS实现库,用于生成服务客户端和服务器端代码。 通过这个源码包的学习,开发者可以掌握Web服务的生命周期管理、异常处理、安全性设置以及性能优化等多个方面,这对于提升...
7. ** Axis2, CXF, Metro**:这些都是Java Web服务的实现框架,提供工具和库来简化开发过程。它们支持JAX-WS标准,提供了额外的功能,如安全性和性能优化。 通过阅读《Java Web Services: Up and Running》,读者将...
开发Web服务时,开发者通常会使用工具如Apache Axis、CXF、GlassFish Metro等来生成WSDL文件和客户端代理类,这些工具简化了服务的创建和调用过程。此外,对于测试,有像SoapUI这样的专业工具,可以方便地模拟请求并...