csci 599: beyond web browsers professor shahram ghandeharizadeh computer science department los...

48
CSCI 599: Beyond Web CSCI 599: Beyond Web Browsers Browsers Professor Shahram Ghandeharizadeh Professor Shahram Ghandeharizadeh Computer Science Department Computer Science Department Los Angeles, CA 90089 Los Angeles, CA 90089

Post on 19-Dec-2015

220 views

Category:

Documents


0 download

TRANSCRIPT

CSCI 599: Beyond Web CSCI 599: Beyond Web BrowsersBrowsers

Professor Shahram GhandeharizadehProfessor Shahram GhandeharizadehComputer Science DepartmentComputer Science DepartmentLos Angeles, CA 90089Los Angeles, CA 90089

eXtensible Markup Language (XML)eXtensible Markup Language (XML)

XML:XML: A World-Wide-Web Consortium (W3C) standard.A World-Wide-Web Consortium (W3C) standard. Enables you to create your own tags.Enables you to create your own tags. Emerging as a standard for interoperability Emerging as a standard for interoperability

among applications that wish to exchange data.among applications that wish to exchange data. Separates content (document) from presentation Separates content (document) from presentation

(style sheet).(style sheet).

XML TerminologyXML Terminology An XML element is made up of a start tag, an end tag, and data An XML element is made up of a start tag, an end tag, and data

in between:in between: <<classclass>csci599<>csci599</class/class>> Tags without text can contain the end marker at the end of the Tags without text can contain the end marker at the end of the

start tag, I.e., <class></class> is equivalent to: <class />start tag, I.e., <class></class> is equivalent to: <class />

An element may contain one or more attributes:An element may contain one or more attributes: <class <class type=“Seminar”>type=“Seminar”>csci599</class>csci599</class> An attribute is a name-value pair separated by ‘=‘An attribute is a name-value pair separated by ‘=‘ Attribute values must be enclosed in quotation marks.Attribute values must be enclosed in quotation marks.

Document Type Definition (DTD): defines the tags contained Document Type Definition (DTD): defines the tags contained in your document, what tags contain other tags, number and in your document, what tags contain other tags, number and sequence of tags, the attributes your tags may have, and sequence of tags, the attributes your tags may have, and optionally, the values those attributes may have.optionally, the values those attributes may have.

Describes data within the tags! “class” is Describes data within the tags! “class” is a tag!a tag!

XML Name Space (xmlns)XML Name Space (xmlns) Collection of names used as element or Collection of names used as element or

attribute names in an XML document.attribute names in an XML document. Qualifies element names on the Web to Qualifies element names on the Web to

avoid conflicts between elements with the avoid conflicts between elements with the same name.same name.

A name space is identified by a globally A name space is identified by a globally unique URI (across the Internet).unique URI (across the Internet).

Name spaces are declared in 2 ways:Name spaces are declared in 2 ways:1.1. ExplicitExplicit

2.2. ImplicitImplicit

Explicit xmlnsExplicit xmlns<BOOKS><BOOKS>

<bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” <bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” xmlns:money=“urn:Finance.Money”>xmlns:money=“urn:Finance.Money”>

<bk:TITLE>Web Services</bk:TITLE><bk:TITLE>Web Services</bk:TITLE>

<bk:PRICE money:currency=“US <bk:PRICE money:currency=“US DOLLAR”>22.95</bk:PRICE>DOLLAR”>22.95</bk:PRICE>

</bk:BOOK></bk:BOOK>

</BOOKS></BOOKS>

Explicit xmlnsExplicit xmlns<BOOKS><BOOKS>

<bk:BOOK <bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” xmlns:bk=“urn:BookLovers.org:BookInfo” xmlns:money=“urn:Finance.Money”xmlns:money=“urn:Finance.Money”>>

<bk:TITLE>Web Services</bk:TITLE><bk:TITLE>Web Services</bk:TITLE>

<bk:PRICE money:currency=“US <bk:PRICE money:currency=“US DOLLAR”>22.95</bk:PRICE>DOLLAR”>22.95</bk:PRICE>

</bk:BOOK></bk:BOOK>

</BOOKS></BOOKS>

Declares “bk” and “money” to be shorthand for the full names Declares “bk” and “money” to be shorthand for the full names

of their respective namespacesof their respective namespaces. . Bk and money are name Bk and money are name

spaces.spaces.

Explicit xmlnsExplicit xmlns<BOOKS><BOOKS>

<bk:BOOK xmlns:bk=“<bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfourn:BookLovers.org:BookInfo” ” xmlns:money=“urn:Finance.Money”>xmlns:money=“urn:Finance.Money”>

<bk:TITLE>Web Services</bk:TITLE><bk:TITLE>Web Services</bk:TITLE>

<bk:PRICE money:currency=“US <bk:PRICE money:currency=“US DOLLAR”>22.95</bk:PRICE>DOLLAR”>22.95</bk:PRICE>

</bk:BOOK></bk:BOOK>

</BOOKS></BOOKS>

This is the namespace value for “bk” variable!This is the namespace value for “bk” variable!

Explicit xmlnsExplicit xmlns<BOOKS><BOOKS>

<bk:BOOK xmlns:bk=“<bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfourn:BookLovers.org:BookInfo” ” xmlns:money=“urn:Finance:Money”>xmlns:money=“urn:Finance:Money”>

<bk:TITLE>Web Services</bk:TITLE><bk:TITLE>Web Services</bk:TITLE>

<bk:PRICE money:currency=“US <bk:PRICE money:currency=“US DOLLAR”>22.95</bk:PRICE>DOLLAR”>22.95</bk:PRICE>

</bk:BOOK></bk:BOOK>

</BOOKS></BOOKS>

All elements/attributes beginning with “bk:” or “money:” are All elements/attributes beginning with “bk:” or “money:” are considered to be from the namespace considered to be from the namespace “urn:BookLovers.org:BookInfo” or “urn:Finance:Money”“urn:BookLovers.org:BookInfo” or “urn:Finance:Money”

Explicit xmlnsExplicit xmlns<BOOKS><BOOKS>

<bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” <bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” xmlns:money=“urn:Finance:Money”>xmlns:money=“urn:Finance:Money”>

<<bk:TITLEbk:TITLE>Web Services</bk:TITLE>>Web Services</bk:TITLE>

<bk:PRICE money:currency=“US <bk:PRICE money:currency=“US DOLLAR”>22.95</bk:PRICE>DOLLAR”>22.95</bk:PRICE>

</bk:BOOK></bk:BOOK>

</BOOKS></BOOKS>

This is the bk namespace prefix qualifying the TITLE tag!This is the bk namespace prefix qualifying the TITLE tag!

Explicit xmlnsExplicit xmlns<BOOKS><BOOKS>

<bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” <bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” xmlns:money=“urn:Finance:Money”>xmlns:money=“urn:Finance:Money”>

<bk:TITLE>Web Services</bk:TITLE><bk:TITLE>Web Services</bk:TITLE>

<bk:PRICE money:currency=“US <bk:PRICE money:currency=“US DOLLAR”>DOLLAR”>22.9522.95</bk:PRICE></bk:PRICE>

</bk:BOOK></bk:BOOK>

</BOOKS></BOOKS>

What is this?What is this?

Explicit xmlnsExplicit xmlns<BOOKS><BOOKS>

<bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” <bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” xmlns:money=“urn:Finance:Money”>xmlns:money=“urn:Finance:Money”>

<bk:TITLE>Web Services</bk:TITLE><bk:TITLE>Web Services</bk:TITLE>

<bk:PRICE money:currency=“US <bk:PRICE money:currency=“US DOLLAR”>DOLLAR”>22.9522.95</bk:PRICE></bk:PRICE>

</bk:BOOK></bk:BOOK>

</BOOKS></BOOKS>

Price element value!Price element value!

Explicit xmlnsExplicit xmlns<BOOKS><BOOKS>

<bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” <bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” xmlns:money=“urn:Finance:Money”>xmlns:money=“urn:Finance:Money”>

<bk:TITLE>Web Services</bk:TITLE><bk:TITLE>Web Services</bk:TITLE>

<bk:PRICE money:currency=“<bk:PRICE money:currency=“US US DOLLARDOLLAR”>22.95</bk:PRICE>”>22.95</bk:PRICE>

</bk:BOOK></bk:BOOK>

</BOOKS></BOOKS>

What is this?What is this?

Explicit xmlnsExplicit xmlns<BOOKS><BOOKS>

<bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” <bk:BOOK xmlns:bk=“urn:BookLovers.org:BookInfo” xmlns:money=“urn:Finance:Money”>xmlns:money=“urn:Finance:Money”>

<bk:TITLE>Web Services</bk:TITLE><bk:TITLE>Web Services</bk:TITLE>

<bk:PRICE money:currency=“<bk:PRICE money:currency=“US US DOLLARDOLLAR”>22.95</bk:PRICE>”>22.95</bk:PRICE>

</bk:BOOK></bk:BOOK>

</BOOKS></BOOKS>

Attribute value!Attribute value!

Implicit xmlnsImplicit xmlns A namespace without a prefix becomes the default namespaceA namespace without a prefix becomes the default namespace

<BOOKS><BOOKS>

<BOOK xmlns=“urn:BookLovers.org:BookInfo”><BOOK xmlns=“urn:BookLovers.org:BookInfo”>

<TITLE>Web Services</TITLE><TITLE>Web Services</TITLE>

<PRICE currency=“<PRICE currency=“US DOLLARUS DOLLAR”>22.95</PRICE>”>22.95</PRICE>

</BOOK></BOOK>

</BOOKS></BOOKS>

GXAGXA GXA, Global XML Web Services ArchitectureGXA, Global XML Web Services Architecture

GXA consists of several specifications:GXA consists of several specifications: DIME Specification Index PageDIME Specification Index Page WS-AttachmentsWS-Attachments WS-CoordinationWS-Coordination WS-InspectionWS-Inspection WS-ReferralWS-Referral WS-RoutingWS-Routing WS-SecurityWS-Security WS-TransactionWS-Transaction

WS-RoutingWS-Routing

Stateless, SOAP-based protocol for routing Stateless, SOAP-based protocol for routing SOAP messages.SOAP messages.

With WS-Routing, the entire message path With WS-Routing, the entire message path for a SOAP message (as well as its return for a SOAP message (as well as its return path) can be described directly in the SOAP path) can be described directly in the SOAP envelope.envelope.

Designed for:Designed for: One-way & two-way messagingOne-way & two-way messaging Peer-to-peer conversationsPeer-to-peer conversations Long running dialogs.Long running dialogs.

WS-RoutingWS-Routing

Why?Why? SOAP-based specifications are designed to be SOAP-based specifications are designed to be

composed with each other to provide a rich composed with each other to provide a rich messaging environment.messaging environment.

WS-Routing encpsulates a message path WS-Routing encpsulates a message path within a SOAP message.within a SOAP message.

WS-RoutingWS-Routing What is missing from SOAP?What is missing from SOAP?

SOAP cannot indicate a message path that SOAP cannot indicate a message path that organizes a collection of Web Services that act organizes a collection of Web Services that act as intermediaries into a sequence.as intermediaries into a sequence.

Example: Example: SOAP message M generated by A can indicate SOAP message M generated by A can indicate

which part of M is intended for B, C, and D.which part of M is intended for B, C, and D. A’s SOAP message A’s SOAP message CANNOTCANNOT indicate that the indicate that the

intermediaries should be organized as follows:intermediaries should be organized as follows:

AA BB CC DD

ExampleExample<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

<wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id> </wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

ExampleExample<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to><wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

<wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id> </wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

This is the This is the ultimate end ultimate end point, node Dpoint, node D

ExampleExample<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd><wsrp:fwd>

<wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

</wsrp:fwd></wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id> </wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

Forward message Forward message path as an path as an ordered list of via ordered list of via elementselements

ExampleExample<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

<wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from><wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id> </wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

The node The node originating the originating the message, node Amessage, node A

ExampleExample<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

<wsrp:via>soap://B.com</wsrp:via><wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id> </wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

An intermediary An intermediary that the message that the message must visit, node Bmust visit, node B

ExampleExample<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

<wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id> </wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

Another Another intermediary after intermediary after node Bnode B

ProcessingProcessing<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

<wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id> </wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

ProcessingProcessing<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

<wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id>

</wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header>

<SOAP-ENV:Body> <SOAP-ENV:Body>

......

</SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

ProcessingProcessing<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id>

</wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header>

<SOAP-ENV:Body> <SOAP-ENV:Body>

......

</SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

ProcessingProcessing<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id>

</wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header>

<SOAP-ENV:Body> <SOAP-ENV:Body>

......

</SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

ProcessingProcessing If the value of “to” element does not identify “D” then WS-Routing If the value of “to” element does not identify “D” then WS-Routing

generates a faultgenerates a fault<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> envelope"> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

</wsrp:fwd> </wsrp:fwd>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id> </wsrp:path> </wsrp:path>

</SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

ExampleExample With rev, WS-Routing builds a reverse pathWith rev, WS-Routing builds a reverse path<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

<wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

</wsrp:fwd></wsrp:fwd><wsrp:rev><wsrp:rev></wsrp:rev> </wsrp:rev> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id>

</wsrp:path> </wsrp:path> </SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

ExampleExample<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

<wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via></wsrp:fwd></wsrp:fwd><wsrp:rev><wsrp:rev>

<wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via> </wsrp:rev> </wsrp:rev> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id>

</wsrp:path> </wsrp:path> </SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

ExampleExample<SOAP-ENV:Envelope <SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> xmlns:SOAP-ENV="http://www.w3.org/2001/06/soap-envelope"> <SOAP-ENV:Header> <SOAP-ENV:Header>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd> </wsrp:fwd></wsrp:fwd><wsrp:rev><wsrp:rev>

<wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via>

</wsrp:rev> </wsrp:rev> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id>

</wsrp:path> </wsrp:path> </SOAP-ENV:Header></SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> ...... </SOAP-ENV:Body> </SOAP-ENV:Body>

</SOAP-ENV:Envelope> </SOAP-ENV:Envelope>

AA BB CC DD

ExampleExample Node D may contact A by:Node D may contact A by:

Setting its <fwd> to the <rev> in order to contact node ASetting its <fwd> to the <rev> in order to contact node A Swap the value of its <to> and <from>Swap the value of its <to> and <from>

<wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/"> <wsrp:path xmlns:wsrp="http://schemas.xmlsoap.org/rp/">

<wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:action>http://www.im.org/chat</wsrp:action> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:to>soap://D.com/some/endpoint</wsrp:to> <wsrp:fwd> <wsrp:fwd>

</wsrp:fwd></wsrp:fwd>

<wsrp:rev><wsrp:rev>

<wsrp:via>soap://C.com</wsrp:via><wsrp:via>soap://C.com</wsrp:via>

<wsrp:via>soap://B.com</wsrp:via> <wsrp:via>soap://B.com</wsrp:via>

</wsrp:rev> </wsrp:rev>

<wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:from>soap://A.com/some/endpoint</wsrp:from> <wsrp:id><wsrp:id>uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6uuid:84b9f5d0-33fb-4a81-b02b5b760641c1d6</wsrp:id> </wsrp:id>

</wsrp:path> </wsrp:path>

AA BB CC DD

WS-RoutingWS-Routing WS-Routing does not define fan-in or fan-out WS-Routing does not define fan-in or fan-out

message path models.message path models.

Questions & Answers Questions & Answers

WS-ReferralWS-Referral Provides a way to configure how SOAP Provides a way to configure how SOAP

routers will build a message pathrouters will build a message path It is a protocol for inserting, deleting, and It is a protocol for inserting, deleting, and

querying routing entries in a SOAP router.querying routing entries in a SOAP router. SOAP router is a web service that:SOAP router is a web service that:

implements WS-Routing,implements WS-Routing, Implements WS-Referral specification.Implements WS-Referral specification.

A SOAP router may use WS-Referral to:A SOAP router may use WS-Referral to: Learn about firewalls and other intermediariesLearn about firewalls and other intermediaries Implement load balancing, etc.Implement load balancing, etc.

WS-ReferralWS-Referral Key specifications: for, if, goKey specifications: for, if, go These can loosely be described as a “for … These can loosely be described as a “for …

if … then go via …”:if … then go via …”:For any SOAP actor name matching the set of SOAP actors For any SOAP actor name matching the set of SOAP actors

listed in the for elementlisted in the for element

If the set of conditions listed in the if element is met and If the set of conditions listed in the if element is met and hence the statement is satisfiedhence the statement is satisfied

Then go via one of the SOAP routers listed in the go Then go via one of the SOAP routers listed in the go elementelement

WS-Referral - ExampleWS-Referral - Example Example 1 from msdn.micorosoft.comExample 1 from msdn.micorosoft.com<r:ref xmlns:r=“<r:ref xmlns:r=“http://schemas.xmlsoap.org/ws/2001/10/referralhttp://schemas.xmlsoap.org/ws/2001/10/referral”>”>

<r:for><r:for>

<r:exact>soap://example.org/some.doc</r:exact><r:exact>soap://example.org/some.doc</r:exact>

<r:prefix>soap://example.org/topics/icebergs</r:prefix><r:prefix>soap://example.org/topics/icebergs</r:prefix>

</r:for></r:for>

<r:if><r:if>

<r:ttl>43200000</r:ttl><r:ttl>43200000</r:ttl>

</r:if></r:if>

<r:go><r:go>

<r:via>soap://example.com/mirror</r:via><r:via>soap://example.com/mirror</r:via>

</r:go></r:go>

<r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId><r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId>

<r:desc><r:desc>

<r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr><r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr>

</r:desc></r:desc>

</r:ref></r:ref>

WS-Referral - ExampleWS-Referral - Example Example 1 from msdn.micorosoft.comExample 1 from msdn.micorosoft.com<r:ref xmlns:r=“<r:ref xmlns:r=“http://schemas.xmlsoap.org/ws/2001/10/referralhttp://schemas.xmlsoap.org/ws/2001/10/referral”>”>

<r:for><r:for>

<r:exact>soap://example.org/some.doc</r:exact><r:exact>soap://example.org/some.doc</r:exact>

<r:prefix>soap://example.org/topics/icebergs</r:prefix><r:prefix>soap://example.org/topics/icebergs</r:prefix>

</r:for></r:for>

<r:if><r:if>

<r:ttl>43200000</r:ttl><r:ttl>43200000</r:ttl>

</r:if></r:if>

<r:go><r:go>

<r:via>soap://example.com/mirror</r:via><r:via>soap://example.com/mirror</r:via>

</r:go></r:go>

<r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId><r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId>

<r:desc><r:desc>

<r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr><r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr>

</r:desc></r:desc>

</r:ref></r:ref>

For any SOAP actor name matching For any SOAP actor name matching “soap://example.org/some.doc”“soap://example.org/some.doc”

WS-Referral - ExampleWS-Referral - Example Example 1 from msdn.micorosoft.comExample 1 from msdn.micorosoft.com<r:ref xmlns:r=“<r:ref xmlns:r=“http://schemas.xmlsoap.org/ws/2001/10/referralhttp://schemas.xmlsoap.org/ws/2001/10/referral”>”>

<r:for><r:for>

<r:exact>soap://example.org/some.doc</r:exact><r:exact>soap://example.org/some.doc</r:exact>

<r:prefix>soap://example.org/topics/icebergs</r:prefix><r:prefix>soap://example.org/topics/icebergs</r:prefix>

</r:for></r:for>

<r:if><r:if>

<r:ttl>43200000</r:ttl><r:ttl>43200000</r:ttl>

</r:if></r:if>

<r:go><r:go>

<r:via>soap://example.com/mirror</r:via><r:via>soap://example.com/mirror</r:via>

</r:go></r:go>

<r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId><r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId>

<r:desc><r:desc>

<r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr><r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr>

</r:desc></r:desc>

</r:ref></r:ref>

For any SOAP actor name matching For any SOAP actor name matching “soap://example.org/some.doc” or starting “soap://example.org/some.doc” or starting with prefix “soap…icebergs”with prefix “soap…icebergs”

WS-Referral - ExampleWS-Referral - Example Example 1 from msdn.micorosoft.comExample 1 from msdn.micorosoft.com<r:ref xmlns:r=“<r:ref xmlns:r=“http://schemas.xmlsoap.org/ws/2001/10/referralhttp://schemas.xmlsoap.org/ws/2001/10/referral”>”>

<r:for><r:for>

<r:exact>soap://example.org/some.doc</r:exact><r:exact>soap://example.org/some.doc</r:exact>

<r:prefix>soap://example.org/topics/icebergs</r:prefix><r:prefix>soap://example.org/topics/icebergs</r:prefix>

</r:for></r:for>

<r:if><r:if>

<r:ttl>43200000</r:ttl><r:ttl>43200000</r:ttl>

</r:if></r:if>

<r:go><r:go>

<r:via>soap://example.com/mirror</r:via><r:via>soap://example.com/mirror</r:via>

</r:go></r:go>

<r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId><r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId>

<r:desc><r:desc>

<r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr><r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr>

</r:desc></r:desc>

</r:ref></r:ref>

For any SOAP actor name matching For any SOAP actor name matching “soap://example.org/some.doc” or starting “soap://example.org/some.doc” or starting with prefix “soap…icebergs”, if this referral is with prefix “soap…icebergs”, if this referral is less than 12 hours oldless than 12 hours old

WS-Referral - ExampleWS-Referral - Example Example 1 from msdn.micorosoft.comExample 1 from msdn.micorosoft.com<r:ref xmlns:r=“<r:ref xmlns:r=“http://schemas.xmlsoap.org/ws/2001/10/referralhttp://schemas.xmlsoap.org/ws/2001/10/referral”>”>

<r:for><r:for>

<r:exact>soap://example.org/some.doc</r:exact><r:exact>soap://example.org/some.doc</r:exact>

<r:prefix>soap://example.org/topics/icebergs</r:prefix><r:prefix>soap://example.org/topics/icebergs</r:prefix>

</r:for></r:for>

<r:if><r:if>

<r:ttl>43200000</r:ttl><r:ttl>43200000</r:ttl>

</r:if></r:if>

<r:go><r:go>

<r:via>soap://example.com/mirror</r:via><r:via>soap://example.com/mirror</r:via>

</r:go></r:go>

<r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId><r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId>

<r:desc><r:desc>

<r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr><r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr>

</r:desc></r:desc>

</r:ref></r:ref>

For any SOAP actor name matching For any SOAP actor name matching “soap://example.org/some.doc” or starting “soap://example.org/some.doc” or starting with prefix “soap…icebergs”, if this referral is with prefix “soap…icebergs”, if this referral is less than 12 hours old then go via “soap…less than 12 hours old then go via “soap…mirror”mirror”

WS-Referral - ExampleWS-Referral - Example Change prefix to a node destinationChange prefix to a node destination<r:ref xmlns:r=“<r:ref xmlns:r=“http://schemas.xmlsoap.org/ws/2001/10/referralhttp://schemas.xmlsoap.org/ws/2001/10/referral”>”>

<r:for><r:for>

<r:exact>soap://example.org/some.doc</r:exact><r:exact>soap://example.org/some.doc</r:exact>

<r:prefix>soap://b.org</r:prefix><r:prefix>soap://b.org</r:prefix>

</r:for></r:for>

<r:if><r:if>

<r:ttl>43200000</r:ttl><r:ttl>43200000</r:ttl>

</r:if></r:if>

<r:go><r:go>

<r:via>soap://example.com/mirror</r:via><r:via>soap://example.com/mirror</r:via>

</r:go></r:go>

<r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId><r:refid>uuid:09233523-345b-4351-b623-5dsf35sgs5</r:refId>

<r:desc><r:desc>

<r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr><r:refAddr>http://example.com/references/2001/10/1234.xml</r:refAddr>

</r:desc></r:desc>

</r:ref></r:ref>

For any SOAP actor name matching For any SOAP actor name matching “soap://example.org/some.doc” or starting “soap://example.org/some.doc” or starting with prefix “soap://b.org”, if this referral is with prefix “soap://b.org”, if this referral is less than 12 hours old then go via “soap…less than 12 hours old then go via “soap…mirror”mirror”

WS-Referral - ExampleWS-Referral - Example Assume node A either produces or receives the following for Assume node A either produces or receives the following for

routing:routing:

<S:Envelope xmlns:S=“<S:Envelope xmlns:S=“http://www.w3.org/2001/09/soap-envelopehttp://www.w3.org/2001/09/soap-envelope”>”>

<S:Header><S:Header>

<m:path xmlns:m=“http://schemas.xmlsoap.org/rp/”><m:path xmlns:m=“http://schemas.xmlsoap.org/rp/”>

<m:action>http://www.notification.org/<m:action>http://www.notification.org/update<m:action>update<m:action>

<m:to>soap://b.org</m:to><m:to>soap://b.org</m:to>

<m:from>soap://a.org</m:from><m:from>soap://a.org</m:from>

<m:id>mid:[email protected]</m:id><m:id>mid:[email protected]</m:id>

</m:path></m:path>

</S:Header></S:Header>

<S:Body><S:Body>

</S:Body></S:Body>

</S:Envelope></S:Envelope>

With the WS-Referral statement from the previous slideWith the WS-Referral statement from the previous slide

WS-Referral - ExampleWS-Referral - Example We have a match on the prefix, changing message to:We have a match on the prefix, changing message to:

<S:Envelope xmlns:S=“<S:Envelope xmlns:S=“http://www.w3.org/2001/09/soap-envelopehttp://www.w3.org/2001/09/soap-envelope”>”>

<S:Header><S:Header>

<m:path xmlns:m=“http://schemas.xmlsoap.org/rp/”><m:path xmlns:m=“http://schemas.xmlsoap.org/rp/”>

<m:action>http://www.notification.org/<m:action>http://www.notification.org/update<m:action>update<m:action>

<m:to>soap://b.org</m:to><m:to>soap://b.org</m:to>

<m:fwd><m:fwd>

<m:via>soap://example.com/mirror</m:via><m:via>soap://example.com/mirror</m:via>

</m:fwd></m:fwd>

<m:from>soap://a.org</m:from><m:from>soap://a.org</m:from>

<m:id>mid:[email protected]</m:id><m:id>mid:[email protected]</m:id>

</m:path></m:path>

</S:Header></S:Header>

<S:Body><S:Body>

</S:Body></S:Body>

</S:Envelope></S:Envelope>

WS-ReferralWS-Referral Each WS-Referral statement must have a Each WS-Referral statement must have a

unique identifier, refId:unique identifier, refId: Two logically equivalent WS-Referral statements Two logically equivalent WS-Referral statements

should have the same refId.should have the same refId. Two logically different WS-Referral statements Two logically different WS-Referral statements

must have different refId.must have different refId.

One may:One may: Register a WS-Referral statement with another Register a WS-Referral statement with another

SOAP routerSOAP router Query to request one or more WS-Referral Query to request one or more WS-Referral

statement from another SOAP routerstatement from another SOAP router

Questions & Answers Questions & Answers

Questions & Answers Questions & Answers