第1章 什么是Spring Web Services?

1.1 简介

Spring Web Services (Spring-WS) 是Spring 社区的一个产品,专注于创建文档驱动的Web服务。Spring Web Services旨在促进契约优先的SOAP服务开发,允许使用多种操作XML有效负载的方式创建灵活的Web服务。该产品基于Spring本身,这意味着您可以将Spring概念(如依赖注入)作为Web服务不可分割的一部分。

人们出于多种原因使用Spring-WS,但大多数人在发现其他SOAP栈在遵循Web服务最佳实践方面存在不足后,便开始转向它。Spring-WS使最佳实践变得简单易行。这包括诸如WS-I基本配置文件、契约优先开发以及在契约和实现之间保持松散耦合等实践。Spring Web服务的其他关键特性包括

强大的映射。 您可以根据消息有效负载、SOAP Action头或XPath表达式将传入的XML请求分发到任何对象。

XML API支持。 传入的XML消息不仅可以使用标准JAXP API(如DOM、SAX和StAX),还可以使用JDOM、dom4j、XOM,甚至编组技术进行处理。

灵活的XML编组。 Spring Web Services发行版中的对象/XML映射模块支持JAXB 1和2、Castor、XMLBeans、JiBX和XStream。并且因为它是一个单独的模块,所以您也可以在非Web服务代码中使用它。

重用您的Spring专业知识。 Spring-WS使用Spring应用程序上下文进行所有配置,这应该有助于Spring开发人员快速上手。此外,Spring-WS的架构类似于Spring-MVC。

支持WS-Security。 WS-Security允许您对SOAP消息进行签名、加密和解密,或对其进行身份验证。

与Acegi Security集成。 Spring Web Services的WS-Security实现提供了与Acegi Security的集成。这意味着您也可以将现有的Acegi配置用于您的SOAP服务。

由Maven构建。 这有助于您在您自己的基于Maven的项目中有效地重用Spring Web Services工件。

Apache许可证。 您可以放心地在您的项目中使用Spring-WS。

1.2 运行时环境

Spring Web Services需要标准的Java 1.5运行时环境。Java 1.6也受支持。Spring-WS还需要Spring 3.0或更高版本。

Spring-WS由多个模块组成,本节的其余部分将对这些模块进行描述。

  • XML模块(spring-xml.jar)包含Spring Web Services的各种XML支持类。此模块主要用于Spring-WS框架本身,而不是Web服务开发人员。

  • 核心模块(spring-ws-core.jar)是Spring Web服务功能的核心部分。它提供了中心 WebServiceMessage SoapMessage接口,服务器端框架,具有强大的消息分发功能,以及用于实现Web服务端点的各种支持类;以及客户端 WebServiceTemplate

  • 支持模块(spring-ws-support.jar)包含其他传输(JMS、电子邮件等)。

  • 安全包(spring-ws-security.jar)提供了一个与核心Web服务包集成的WS-Security实现。它允许您添加主体令牌、签名以及解密和加密SOAP消息。此外,它还允许您利用现有的Spring Security安全实现进行身份验证和授权。

下图说明了Spring-WS模块及其之间的依赖关系。箭头表示依赖关系,即Spring-WS Core依赖于Spring-XML和Spring 3中找到的OXM模块。

Spring-WS模块之间的依赖关系