1.构建SOAP WebServices——概述

SOAP被设计为语言、传输,以及平台独立,它是老式中间件技术(如CORBA和DCOM)的替代技术。它也

被设计为可扩展。WS-*标准:WS-Addressing、WS-Policy、WS-Security以及等等都是建立在SOAP协议上。

使用SOAP、WSDL以及XML schema构建的web服务已经成为交换基于XML消息的标准。Spring Web-Services

推进了SOAP服务开发(通过提供一套完整的API和配置用于灵活的web服务创建)。

MessageDispatcher是Spring Web-Service的核心,它转发Web服务消息给注册的endpoint。在Spring-WS中,

请求/响应消息被包装在MessageContext对象中,该对象被传递给MessageDispatcher。当一个消息到来了,

MessageDispatcher使用request对象来得到endpoint,然后,得到endpoint的interceptors,并在它们上面调

用handleRequest方法。拦截器就是在调用endpoint的前(请求)后(响应)执行一些操作。之后,

MessageDispatcher得到相应的endpoint adapter。最后EndpointAdapter调用endpoint的方法,并将响应

转换成理想的格式并设置到MessageContext中。

Spring-WS只支持contract-first开发风格,也就是第一步是创建contract(XSD或WSDL)。

使用Spring-WS构建contract-first web服务的步骤如下:

1、契约的定义(XSD或WSDL)

2、创建endpoint:类(接收并处理到来的消息)

3、Spring beans和endpoint的配置

endpoints有两种:payload endpoints、message endpoints。

message endpoint能访问整个XML SOAP envelop

payload endpoint只访问一个SOAP envelop的payload部分,也就是一个SOAP envelop的body部分。

在以后的学习中,我们关注的是payload endpoints。

为了描述Web服务的创建过程,这里使用了简单的虚构的饭店作为业务场景,它需要接受来自客户的订单。

于是它决定发布它的OrderService组件为一个Web服务。为简单起见,只有两个操作:

String placeOrder(...)和boolean cancelOperator(...)

领域模型如下图:



 

后面的学习将逐渐地构建该项目的一小部分,直到完成整个项目。java项目名取为LiveRestaurant,

每个recipe带有_R-x.x后缀。例如,第1个recipe将使用LiveRestaurant_R-1.1和

LiveRestaurant_R-1.1-Client作为server和client的项目名。

本章的目标是构建一个web服务,因此,更多是强调解释服务端代码和配置。客户端代码只是用来

检验服务端的功能,客户端的更多知识将在后面的章节学习。

猜你喜欢

转载自zsjg13.iteye.com/blog/2412064