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 Services 的其他主要特性包括
强大的映射。 您可以将传入的 XML 请求分发到任何对象,具体取决于消息有效负载、SOAP Action 标头或 XPath 表达式。
XML API 支持。 传入的 XML 消息不仅可以使用标准的 JAXP API(如 DOM、SAX 和 StAX)进行处理,还可以使用 JDOM、dom4j、XOM 甚至编组技术进行处理。
灵活的 XML 编组。 Spring Web Services 发行版中的 Object/XML Mapping 模块支持 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。
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 模块之间的依赖关系