1 / 13

Apache Axis2

SOAP Primer. Apache Axis2. Agenda. What is SOAP? Characteristics SOAP message structure Header blocks Fault notification Exercises. What is SOAP?.

sanjiv
Download Presentation

Apache Axis2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SOAP Primer Apache Axis2

  2. Agenda • What is SOAP? • Characteristics • SOAP message structure • Header blocks • Fault notification • Exercises

  3. What is SOAP? • Provides the definition of the XML-based information which can be used for exchanging structured and typed information between peers in a decentralized, distributed environment • Specification: http://www.w3.org/TR/soap/ Initial Sender Ultimate Receiver Intermediary

  4. Characteristics • A SOAP message is formally specified as an XML infoset • "on-the-wire" representation can be anything • SOAP describes a stateless, one-way message exchange mechanism between a SOAP sender and a SOAP receiver • But applications can create more complex interaction patterns on top of this one-way exchange mechanism • request/response • request/multiple responses • back-and-forth conversations

  5. SOAP Message Structure Envelope Header (Optional)‏ Header Block 1 Header Block 2 Body

  6. Example SOAP Message SOAP 1.2: http://www.w3.org/2003/05/soap-envelope <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="..."> <soapenv:Body> <ns1:c2f xmlns:ns1="http://mypkg"> <ns1:cTemp>100.0</ns1:cTemp> </ns1:c2f> </soapenv:Body> </soapenv:Envelope>

  7. Example SOAP Message 2 <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="..."> <soapenv:Header> <exh:client xmlns:exh="..." soapenv:mustUnderstand="true"> <exh:id>AS223@12</exh:id> </exh:client> </soapenv:Header> <soapenv:Body> <ns1:c2f xmlns:ns1="http://mypkg"> <ns1:cTemp>100.0</ns1:cTemp> </ns1:c2f> </soapenv:Body> </soapenv:Envelope>

  8. Header Blocks • Each header block may contain an optional “role” attribute • Any URI can be the value • Some predefined roles • Nexthttp://www.w3.org/2003/05/soap-envelope/role/next • Ultimate Receiverhttp://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver • Nonehttp://www.w3.org/2003/05/soap-envelope/role/none • Empty (“”)‏

  9. Header Blocks (Cont.)‏ • A header block may contain “mustUnderstand” attribute • true: Targeted node must process the header • false: Targeted node may process the header • A header block may contain “relay” attribute • true: Header block targeted at the node must be relayed if it is not processed • false: Header block targeted at the node is not forwarded if it is not processed

  10. Fault Notification • SOAP fault notification mechanism is based on fault details put inside SOAP body <soapenv:Body> <soapenv:Fault> <soapenv:Code> <soapenv:Value> soapenv:Receiver </soapenv:Value> </soapenv:Code> <soapenv:Reason> <soapenv:Text xml:lang="en-US"> Undeclared namespace prefix "ns1" </soapenv:Text> </soapenv:Reason> <soapenv:Detail /> </soapenv:Fault> </soapenv:Body>

  11. Fault Notification (Cont.)‏ • Nested fault details can be placed inside “Subcode” <soapenv:Body> <soapenv:Fault> <soapenv:Code> <soapenv:Value> ... </soapenv:Value> <soapenv:Subcode> <soapenv:Value> ... </soapenv:Value> <soapenv:Subcode> ... </soapenv:Subcode> </soapenv:Subcode> </soapenv:Code> ...

  12. Fault Notification (Cont.)‏ <soapenv:Fault> <soapenv:Code> </soapenv:Code> <soapenv:Reason> </soapenv:Reason> <soapenv:Detail> </soapenv:Detail> <soapenv:Node> </soapenv:Node> <soapenv:Role> </soapenv:Role> </soapenv:Fault> The node that generated the fault The role played by the node that generated the fault

  13. Exercises • In Module 01 (“Introduction to Web Services With Apache Axis2”), we used TCPMon to intercept and inspect SOAP messages between a SOAP client and server. • Capture the communication between TemperatureConverterClient and Server. • Attempt to resend the request and make sure server responds properly. • Add an arbitrary SOAP header block and try. • Set the “role” attribute of the header so that the message is targeted at the next SOAP node. Resend the message. • Set the “mustUnderstand” attribute to “true” and try. • Carefully note if there are differences between responses and HTTP headers in each case.

More Related