cs603 communication mechanisms soap n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
CS603 Communication Mechanisms: SOAP PowerPoint Presentation
Download Presentation
CS603 Communication Mechanisms: SOAP

Loading in 2 Seconds...

play fullscreen
1 / 17

CS603 Communication Mechanisms: SOAP - PowerPoint PPT Presentation


  • 167 Views
  • Uploaded on

CS603 Communication Mechanisms: SOAP. 25 January 2002. SOAP: Simple Object Access Protocol. Overview Goal: RPC protocol that works over wide area networks Interoperable Language independent Problem: Firewalls Solution: HTTP/XML History Work started in 1998 – produced XML-RPC

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'CS603 Communication Mechanisms: SOAP' - guri


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
soap simple object access protocol
SOAP:Simple Object Access Protocol
  • Overview
    • Goal: RPC protocol that works over wide area networks
      • Interoperable
      • Language independent
    • Problem: Firewalls
      • Solution: HTTP/XML
  • History
    • Work started in 1998 – produced XML-RPC
      • Vendor-led, big Microsoft influence
    • 1999: SOAP 1 – type system from XML Schemas
      • More vendors
    • 2001: Picked up by W3C – XML Protocol working group
      • Now called XP (XML Protocol)
      • Microsoft using it for their .NET replacement for DCOM
slide3
SOAP
  • Advantages
    • Goes anywhere
      • http is universal protocol
    • Open standard
      • Based on XML, defined by W3C working group
  • Disadvantages
    • Type semantics must be defined
      • Extra work for users
    • Pure text protocol
      • High cost to translate at endpoints
      • Eats bandwidth
soap components
SOAPComponents
  • Client side: Ability to generate http calls and listen for response

Sounds like a browser!

  • Server:
    • Listen for HTTP
    • Bind to procedure
    • Respond with HTTP

First and last are Web Server!

soap call
SOAP call

<soap:Envelope>

<soap:Body>

<xmlns:m="http://www.stock.org/stock" />

<m:GetStockPrice>

<m:StockName>IBM</m:StockName>

</m:GetStockPrice>

</soap:Body>

</soap:Envelope>

soap response
SOAP response

<soap:Envelope>

<soap:Body>

<xmlns:m="http://www.stock.org/stock" />

<m:GetStockPriceResponse>

<m:Price>34.5</m:Price>

</m:GetStockPriceResponse>

</soap:Body>

</soap:Envelope>

soap template
SOAP Template

<soap:Envelope

xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<soap:Header>

User-created definitions, e.g. language of message

</soap:Header>

<soap:Body>

Call and arguments, or results for a response

</soap:Body>

<soap:Fault>

Errors (response only)

</soap:Fault>

</soap:Envelope>

key soap attributes
Key SOAP Attributes
  • Header
    • Actor: URI of intended recipient
    • encodingStyle: URI of definition of types used
    • mustUnderstand: True if receiver MUST process element
  • Fault
    • <faultcode>: VersionMismatch, MustUnderstand, Client, Server
    • <faultstring>: Error as a string
    • <faultactor>: Who caused it
    • <detail>: Additional information
building a client apache soap
Building a client:Apache SOAP
  • Open source web server driven by IBM
  • SOAP available as integral part
  • Java packages to interface between java programs and SOAP
  • Also supports javascript SOAP clients/servers
soap sample client
SOAPSample Client

import java.net.URL; import java.util.Vector;

import org.apache.soap.SOAPException;

import org.apache.soap.Constants;

import org.apache.soap.Fault;

import org.apache.soap.rpc.Call;

import org.apache.soap.rpc.Parameter;

import org.apache.soap.rpc.Response;

public class Client {

public static void main(String[] args) throws Exception {

URL url = new URL("http://localhost:8080/apache-soap/servlet/rpcrouter");

Call call = new Call();

call.setTargetObjectURI("urn:Hello");

call.setMethodName(“HelloWorld");

call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

Vector params = new Vector();

params.addElement(new Parameter("name", String.class, “Argument”, null));

call.setParams(params);

soap sample client1
SOAPSample Client

Response resp = null;

try { resp = call.invoke(url, ""); }

catch( SOAPException e ) {

System.err.println("Caught SOAPException (" + e.getFaultCode() + "): " +e.getMessage());

System.exit(-1);

} // Check the response.

if( !resp.generatedFault() ) {

Parameter ret = resp.getReturnValue();

Object value = ret.getValue();

System.out.println(value);

} else {

Fault fault = resp.getFault();

System.err.println("Generated fault: ");

System.out.println (" Fault Code = " + fault.getFaultCode());

System.out.println (" Fault String = " + fault.getFaultString());

}

}

soap server code
SOAPServer code

public class HelloServer

{

public String HelloWorld(String name)

{

System.out.println(name);

return "Hello World!”;

}

}

activating the server
Activating the server
  • org.apache.soap.server.ServiceManagerClienthttp://localhost:8080/apache-soap/servlet/rpcrouter deploy DeploymentDescriptor.xml
  • DeploymentDescripter.xml:

<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment" id="urn:Hello">

<isd:provider type="java" scope="Application“ methods=“HelloWorld">

<isd:java class="HelloServer" static="false"/>

</isd:provider>

</isd:service>

client generated call
Client-generated call

<soap:Envelope

xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/1999/XMLSchema">

<soap:Header>

</soap:Header>

<soap:Body>

<ns1:HelloWorld

xmlns:ns1="Hello"

soap:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/">

<name xsi:type="xsd:string">Arguments</name>

</ns1:HelloWorld>

</soap:Body>

</soap:Envelope>

server generated response
Server-generated response

<soap:Envelope

xmlns:soap= "http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/1999/XMLSchema">

<soap:Body>

<ns1:HelloWorld

xmlns:ns1="Hello"

soap:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/">

<return xsi:type="xsd:string">Hello World!</return>

</ns1:HelloWorld>

</soap:Body>

</soap:Envelope>

dce vs java rmi vs soap
DCE vs. Java RMI vs. SOAP
  • Philosophy
    • DCE RPC: generic interface
      • Define “clean sheet” system
      • Port to variety of protocols/systems/languages
    • Java RMI: “proprietary” interface
      • Coupled to single language/run time system
      • Port entire system to multiple platforms
    • SOAP: single standard interface
      • Define interface on single protocol
      • Pick protocol that is universal
which do i use
Which do I use?
  • All-JAVA world? RMI
  • Need security / fault tolerance? RPC
  • Need to get through firewalls? SOAP
  • Performance?
  • Objects as arguments?