Request-Response Message Exchange Pattern

This section describes the SOAP Request-Response Message Exchange Pattern, its properties and processing rules.

Request-Response Message Exchange Pattern is a pattern where a request SOAP message followed by a response SOAP message are exchanged between two SOAP nodes. The pattern name is: http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName = http://www.w3.org/2003/05/soap/mep/request-response/.

Request-Response Message Exchange Pattern defines the following additional SOAP properties:

1. Outbound Message: Used to represent the outbound SOAP message from this local node point of view. This property is named as: http://www.w3.org/2003/05/soap/mep/OutboundMessage

2. Inbound Message: Used to represent the inbound SOAP message from this local node point of view. This property is named as: http://www.w3.org/2003/05/soap/mep/InboundMessage

3. Destination Node: Used to identify the remote SOAP node of the outbound message. This property is named as: http://www.w3.org/2003/05/soap/mep/ImmediateDestination

4. Sender Node: Used to identify the remote SOAP node of the inbound message. This property is named as: http://www.w3.org/2003/05/soap/mep/ImmediateSender

Request-Response Message Exchange Pattern also defines the following processing rules:

Rule 1: At the requesting SOAP node, there will be a set of SOAP properties with the following initial values:

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /ExchangePatternName
   = "http://www.w3.org/2003/05/soap/mep/request-response/"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /FailureReason
   = "None"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /Role
   = "RequestingSOAPNode/"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /State
   = "Init"

http://www.w3.org/2003/05/soap/mep/OutboundMessage
   = (the requesting message)

http://www.w3.org/2003/05/soap/mep/InboundMessage
   = (not defined yet)

http://www.w3.org/2003/05/soap/mep/ImmediateDestination
   = (the URI of the responding node)
   
http://www.w3.org/2003/05/soap/mep/ImmediateSender
   = (not defined)

Rule 2: At the responding SOAP node, there will be another set of SOAP properties with the following initial values:

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /ExchangePatternName
   = "http://www.w3.org/2003/05/soap/mep/request-response/"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /FailureReason
   = "None"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /Role
   = "RespondingSOAPNode/"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /State
   = "Init"

http://www.w3.org/2003/05/soap/mep/OutboundMessage
   = (not defined yet)

http://www.w3.org/2003/05/soap/mep/InboundMessage
   = (the requesting message)

http://www.w3.org/2003/05/soap/mep/ImmediateDestination
   = (not defined)
   
http://www.w3.org/2003/05/soap/mep/ImmediateSender
   = (the URI of the requesting node)

Rule 3: In the normal process flow, the requesting node will initiate the communication call, and start sending the request message. The responding node will answer the call, and start receiving the request message. The responding node can start sending the response message once the first part of the request message has arrived at the responding node. The progress of the communication process should be presented by the "State" property at both nodes as illustrated in the following diagram:

"State" at Requesting Node           "State" at Responding Node
"Init"
   |
   |- Initialization
   v
"Requesting"        <------------>   "Init"
   |                                    |
   |- Requesting SOAP call              | - Initialization
   |                                    v
   |                <------------>   "Receiving"
   |                                    |
   |                                    | - Receiving SOAP call
   v                                    v
"Sending+Receiving" <------------>   "Receiving+Sending"
   |                                    |
   |- Sending request msg               | - Receiving request msg
   |- Receiving response msg            | - Sending response msg
   v                                    v
"Success"                            "Success"

Table of Contents

 About This Book

 Introduction to Web Service

 Introduction to SOAP (Simple Object Access Protocol)

 SOAP Message Structure

 SOAP Message Transmission and Processing

 SOAP Data Model

 SOAP Encoding

 SOAP RPC Presentation

 SOAP Properties Model

SOAP MEP (Message Exchange Patterns)

 What Are SOAP Message Exchange Patterns

Request-Response Message Exchange Pattern

 Response Message Exchange Pattern

 Web Method Feature

 SOAP Action Feature

 SOAP HTTP Binding

 SOAP PHP Implementations

 PHP SOAP Extension Client Programs

 PHP SOAP Extension Server Programs

 PHP SOAP Web Service Example - getTemp

 SOAP Perl Implementations

 Perl SOAP::Lite - SOAP Server-Client Communication Module

 Perl Socket Test Program for HTTP and SOAP

 Perl SOAP::Lite for NumberToWords SOAP 1.1 Web Service

 Perl SOAP::Lite for SOAP 1.2 Web Services

 Perl SOAP::Lite for WSDL

 Python SOAP Client: Zeep

 SOAP Java Implementations

 Java Socket and HttpURLConnection for SOAP

 SAAJ - SOAP with Attachments API for Java

 SoapUI - SOAP Web Service Testing Tool

 WS-Security - SOAP Message Security Extension

 WS-Security X.509 Certificate Token

 Perl SOAP::Lite for GetSpeech SOAP 1.1 Web Service

 Perl SOAP::Lite 0.710 for SOAP 1.2 Web Services

 Perl SOAP::Lite 0.710 for WSDL

 Web Services and SOAP Terminology

 Archived Tutorials

 References

 Full Version in PDF/EPUB