Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS603 Communication Mechanisms: SOAP 25 January 2002.

Similar presentations


Presentation on theme: "CS603 Communication Mechanisms: SOAP 25 January 2002."— Presentation transcript:

1 CS603 Communication Mechanisms: SOAP 25 January 2002

2 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

3 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

4 SOAP Components 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!

5 SOAP call IBM

6 SOAP response 34.5

7 SOAP Template <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> User-created definitions, e.g. language of message Call and arguments, or results for a response Errors (response only)

8 Key SOAP Attributes Header –Actor: URI of intended recipient –encodingStyle: URI of definition of types used –mustUnderstand: True if receiver MUST process element Fault – : VersionMismatch, MustUnderstand, Client, Server – : Error as a string – : Who caused it – : Additional information

9 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

10 SOAP Sample 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);

11 SOAP Sample 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()); }

12 SOAP Server code public class HelloServer { public String HelloWorld(String name) { System.out.println(name); return "Hello World!”; }

13 Activating the server org.apache.soap.server.ServiceManagerClient http://localhost:8080/apache-soap/servlet/rpcrouter deploy DeploymentDescriptor.xml DeploymentDescripter.xml:

14 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"> <ns1:HelloWorld xmlns:ns1="Hello" soap:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> Arguments

15 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"> <ns1:HelloWorld xmlns:ns1="Hello" soap:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> Hello World!

16 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

17 Which do I use? All-JAVA world? RMI Need security / fault tolerance? RPC Need to get through firewalls? SOAP Performance? Objects as arguments?


Download ppt "CS603 Communication Mechanisms: SOAP 25 January 2002."

Similar presentations


Ads by Google