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.
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