1
2
Spring Web Services Reference Documentation
2.4.0.RELEASE
Arjen Poutsma , Rick Evans , Tareq Abed Rabbo
谷歌翻译:宁永利 2017 年 6 月 13 日
3
Copyright © 2005-2014
Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such
copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.
4
目录
前言......................................................................................................................................................................... 6
Part I. 介绍............................................................................................................................................................. 7
1. 什么是 Spring Web Services?....................................................................................................................8
1.1 介绍...................................................................................................................................................8
1.2 运行环境 ........................................................................................................................................... 8
1.3 支持的标准.......................................................................................................................................9
2. 为什么要契约优先?...............................................................................................................................10
2.1 说明.................................................................................................................................................10
2.2 对象/ XML 阻抗不匹配...................................................................................................................10
2.3 契约优先与契约滞后.....................................................................................................................14
3. 编写契约优先的网络服务.......................................................................................................................15
3.1 说明.................................................................................................................................................15
3.2 消息 ................................................................................................................................................. 16
3.3 数据契约.........................................................................................................................................17
3.4 服务契约.........................................................................................................................................21
3.5 创建项目 ......................................................................................................................................... 23
3.6 实现端点 ......................................................................................................................................... 24
3.7 发布 WSDL ....................................................................................................................................30
Part II. 参考..........................................................................................................................................................33
4. 共享组件................................................................................................................................................... 34
4.1 Web 服务消息.................................................................................................................................34
4.2 TransportContext.................................................................................................................. 37
4.3 使用 XPath 处理 XML ......................................................................................................................38
4.4 Message Logging and Tracing..........................................................................................................41
5. 使用 Spring-WS 创建 Web 服务 ...............................................................................................................43
5.1 说明.................................................................................................................................................43
5.2 The MessageDispatcher ........................................................................................................43
5.3 传输.................................................................................................................................................45
5.4 端点 ................................................................................................................................................. 56
5.6 处理异常 ......................................................................................................................................... 71
5.7 服务器端测试 ................................................................................................................................. 73
6. 在客户端上使用 Spring Web Services......................................................................................................79
6.1 介绍 ................................................................................................................................................. 79
5
6.2 使用客户端 API............................................................................................................................... 79
6.3 客户端测试 ..................................................................................................................................... 88
6
前言
在目前面向服务架构的时代,越来越多的人正在使用 Web 服务来连接以前未连接的系统。最初,Web
服务被认为是另一种做远程过程调用(RPC)的方法。随着时间推移,人们发现 RPC 和 Web 服务之间
存在很大差异。特别是当与其他平台的互操作性很重要时,通常会更好地发送封装的 XML 文档,其中
包含处理请求所需的所有数据。在概念上,基于 XML 的 Web 服务比消息队列更好,而不是远程处理解
决方案。总的来说,XML 应该被视为数据的平台中立表示,即 SOA 的 interlingua。在开发或使用 Web
服务时,重点应该放在这个 XML 上,而不是 Java 上。
Spring Web Services 专注于创建这些文档驱动的 Web 服务。 Spring Web Services 可以帮助合同优先的
SOAP 服务开发,允许使用许多方式来操作 XML 有效负载来创建灵活的 Web 服务。 Spring-WS 提供了一
个强大的消息调度框架,与现有应用程序安全解决方案集成的 WS-Security 解决方案,以及遵循熟悉的
Spring 模板模式的客户端 API。
7
Part I. 介绍
参考文档的第一部分是 Spring Web Services 和基本概念的概述。 然后介绍 Spring-WS,并解释契约
优先 Web 服务开发背后的概念。
8
1. 什么是 Spring Web Services?
1.1 介绍
Spring Web Services(Spring-WS)是 Spring 社区专注于创建文档驱动的 Web 服务的产品。 Spring
Web Services 旨在促进契约优先的 SOAP 服务开发,允许使用许多方式来操作 XML 有效负载来创建
灵活的 Web 服务。该产品基于 Spring 本身,这意味着您可以使用 Spring 概念(如依赖注入)作为
Web 服务的组成部分。
人们使用 Spring-WS 有很多原因,但是大多数人在查找到遵循 Web 服务最佳实践的缺陷之后找到了其
他的 SOAP 堆栈时,才引用它。 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 基于支持 JAXB 1 和 2,Castor,XMLBeans,JiBX 和
XStream 的 Spring Framework 中的 Object / XML Mapping 模块。
重新使用您的 Spring 专业知识。 Spring-WS 使用 Spring 应用程序上下文进行所有配置,这将有助于
Spring 开发人员快速上手。此外,Spring-WS 的架构类似于 Spring-MVC 的体系结构。
支持 WS-Security。 WS-Security 允许您签署 SOAP 消息,对其进行加密和解密,或对其进行身份验
证。
与 Spring Security 集成。 Spring Web Services 的 WS-Security 实现提供与 Spring Security 的集成。
这意味着您也可以将您现有的 Spring Security 配置用于 SOAP 服务。
Apache 许可证。您可以自信地在您的项目中使用 Spring-WS。
1.2 运行环境
Spring Web Services 需要一个标准的 Java 7 运行时环境。 还支持 Java 8。 Spring-WS 建立在 Spring
Framework 4.0.9 上,但支持更高版本。
Spring-WS 由许多模块组成,这些模块在本节的其余部分中有描述。
• XML 模块(spring-xml.jar)包含 Spring Web Services 的各种 XML 支持类。 该模块主要面向 Spring- WS
框架本身,而不是 Web 服务开发者。
• Core 模块(spring-ws-core.jar)是 Spring Web Service 功能的核心部分。 它提供了中央
WebServiceMessage 和 SoapMessage 接口,服务器端框架,强大的消息分派以及用于实现 Web 服务端
点的各种支持类; 和客户端 WebServiceTemplate。