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

为什么需要另一种文档模型?

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

文档模型通常用于对 XML 进行处理,并且在 Java 开发中有许多不同的文档模型可供使用,包括原始 W3C DOM 规范的各种实现、JDOM、dom4j、XOM 等等。每种模型都声称与其他模型相比具有某些优点,要么是在性能、灵活性方面,要么是在严格遵守 XML 标准的程度方面,并且每种模型都拥有忠实的支持者。那么,Axis2 为什么需要一种新的模型呢?答案在于 SOAP 消息的结构,尤其是如何在基本的 SOAP 框架中添加相应的扩展。

SOAP 简介

SOAP 本身仅仅只是 XML 应用程序负载的简单包装。清单 1 提供了一个示例,其中只有那些具有 soapenv 前缀的元素才真正是 SOAP 中定义的。文档中大部分是应用程序数据,这些数据组成了 soapenv:Body 元素的内容。

清单 1. SOAP 示例

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
 <soapenv:Header/>
 <soapenv:Body>
  <matchQuakes xmlns="http://seismic.sosnoski.com/types">
   <min-date>2001-01-06T11:10:43.446Z</min-date>
   <max-date>2001-10-24T19:49:13.812Z</max-date>
   <min-long>-150.94307</min-long>
   <max-long>-22.594208</max-long>
   <min-lat>-11.44651</min-lat>
   <max-lat>55.089058</max-lat>
  </matchQuakes>
 </soapenv:Body>
</soapenv:Envelope>

尽管基本的 SOAP 包装非常简单,但是通过使用称为 Header 的可选组件,它提供了不受限制的扩展能力。Header 为添加各种各样的元数据提供了合适的位置,这些元数据与应用程序数据在一起,不会被应用程序看到(可以 在 Header 中包括应用程序数据,但是这样做并不是很合理,您应该将应用程序数据放在消息的正文部分)。构建于 SOAP 之上的扩展(如整个 WS-* 系列),可以使用 Header 实现相应的目标,而不会对应用程序造成任何影响。这允许将扩展作为外接程序使用,可以在部署时选择某个应用程序所需的特定扩展功能,而无需在代码中对其进行处理。

清单 2 显示了与清单 1 SOAP 示例相同的应用程序数据,但其中包括 WS-Addressing 信息。尽管原始的 SOAP 消息只能用于 HTTP 传输(因为 HTTP 提供了双向的连接,使得响应可以立即发送回客户端),但清单 2 中的版本可以用于其他协议,因为 SOAP 请求消息中直接包括了响应元数据。在对清单 2 的消息进行处理的过程中,甚至可以进行存储转发操作,因为这些元数据同时提供了请求目标和响应目标信息。

清单 2. 使用 WS-Addressing 的 SOAP 示例

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:wsa="http://www.w3.org/2005/08/addressing">
  <soapenv:Header>
   <wsa:To>http://localhost:8800/axis2/services/SeisAxis2XBean</wsa:To>
   <wsa:ReplyTo>
    <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
   </wsa:ReplyTo>
   <wsa:MessageID>urn:uuid:97AE2B17231A8584D811537402403691</wsa:MessageID>
  </soapenv:Header>
  <soapenv:Body>
   <matchQuakes xmlns="http://seismic.sosnoski.com/types">
    <min-date>2000-03-28T13:13:08.953Z</min-date>
    <max-date>2001-03-11T02:26:54.283Z</max-date>
    <min-long>-81.532234</min-long>
    <max-long>65.25895</max-long>
    <min-lat>-14.234512</min-lat>
    <max-lat>57.174187</max-lat>
   </matchQuakes>
  </soapenv:Body>
</soapenv:Envelope>

时间: 2024-05-21 04:41:04

Java Web服务,第2部分: 深度探索Axis2:AXIOM的相关文章

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 结合使用,并说明为什么可能

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服务: WS-SecureConversation性能

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

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服务

引言 在过去数年里,随着万维网联盟(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服务,第1部分: Java Web服务在未来一年内的发展

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

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

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

使用SOAP开发java web服务

web|web服务   本文的预定读者首先要对j2ee有所了解,熟悉xml,tomcat等基本内容,本文主要是简单介绍一下web服务的基本内容,怎样在java web开发中构建SOAP服务: 一.SOAP(Simple Object Access Protocol)简单对象访问协议,要了解SOAP,首先就需要了解分布式计算的由来,随着下一代的分布式计算体系web服务的出现,SOAP成为了创建和调用通过网络发布的应用程序的实际通信标准.SOAP类似传统的二进制协议IIOP(CORBA)和JRMP(

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,尤其是在拥有配置基