1 / 42

Lecture 10: Web Services

Lecture 10: Web Services. Outline. Overview of Web Services Create a Web Service with Sun J2EE (JAX-RPC). What is a Web Service?. A web service is a network accessible interface to application programs, built using standard Internet technologies.

Download Presentation

Lecture 10: Web Services

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. Lecture 10:Web Services

  2. Outline • Overview of Web Services • Create a Web Service with Sun J2EE (JAX-RPC)

  3. What is a Web Service? • A web service is a network accessible interface to application programs, built using standard Internet technologies. • Clients of web services do NOT need to know how it is implemented. Web Service Network Application program Application client

  4. "server" "naming service" "client" Web Service Architecture Service provider bind (SOAP) publish (WSDL) Service requestor Service broker find (UDDI)

  5. Web Service Technology Stack shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Client Proxy = Stub, Server Proxy = Tie

  6. Step 1. Write Web Service Method shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Client Proxy = Stub, Server Proxy = Tie

  7. Step 2. Describe Web Service using WSDL shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network WSDL can be automatically generated

  8. Step 3. Deploy Service at Server shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Tie will be created, service location stored in WSDL

  9. Step 4. Publish Service shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Client can locate the service querying UDDI

  10. Step 5. Generate Client Proxy shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Stubs can be generated from WSDL automatically

  11. Step 6. Write Client to Invoke Proxy shopping web service? WSDL URIs Web Service Client UDDI Discovery publish Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Stubs can be generated from WSDL automatically

  12. Step 7. Execute Client shopping web service? WSDL URIs Web Service Client UDDI Discovery publish Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Client invokes service (almost) like a local method

  13. JAX-RPC • JAX-RPC = Java Web Services Architecture • Sun's solution for writing Web Services and Web Service clients • Example: "HelloWorld" Service

  14. Step 1. Write Web Service Method shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Client Proxy = Stub, Server Proxy = Tie

  15. Service Interface package iis; import java.rmi.Remote; import java.rmi.RemoteException; public interface HelloIF extends Remote { public String sayHello(String s) throws RemoteException; } Web Service  Interface derived from class Remote Methods required to throw RemoteException

  16. Service Implementation package iis; public class HelloImpl implements HelloIF { public String message ="Hello"; public String sayHello(String s) throws RemoteException { return message + s; } } Compile the classes: javac HelloIF.java HelloImpl.java

  17. Step 2. Describe Web Service using WSDL shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network WSDL can be automatically generated

  18. Configuration File • All relevant information on Web Service <?xml version="1.0" encoding="UTF-8"?> <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config"> <service name="HelloWorldService" targetNamespace="http://lsirwww.epfl.ch/" typeNamespace="http://lsirwww.epfl.ch/" packageName="iis"> <interface name="cis.HelloIF"/> </service> </configuration>

  19. Generate WSDL • Automatically derived from Interface and Configuration File wscompile -define -mapping build/mapping.xml -d build -nd build -classpath build config.xml • Deploytool will need information from mapping.xml

  20. Structure of WSDL <?xml version="1.0"><definitions name="HelloWorldService" … Name Space Information …> <types> <schema> definition of parameter data types in XML Schema (optional) </schema></types> <message name="HelloIF_sayHello"> definition of a message (request, reply)</message> <portType name="HelloIF"> <operation name="sayHello">definition of an operation (request – reply pair) </operation></portType> <binding name="HelloIfBinding" type="HelloIF"> definition of a protocol binding (typically SOAP)</binding><service name="HelloWorldService"> <port name="StockQuotePort">definition of a port (an Internet address) </port></service></definitions> abstract concrete

  21. Messages <message name="HelloIF_sayHello"> <part name="String_1" type="xsd:string"/> </message> <message name="HelloIF_sayHelloResponse"> <part name="result" type="xsd:string"/> </message> Provides message names and passing of parameters

  22. Ports <portType name="HelloIF"> <operation name="sayHello" parameterOrder="String_1"> <input message="tns:HelloIF_sayHello"/> <output message="tns:HelloIF_sayHelloResponse"/></operation> </portType> Define message sequences corresponding to a service invocation

  23. Protocol Binding <binding name="HelloIFBinding" type="tns:HelloIF"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> <operation name="sayHello"> <soap:operation soapAction=""/> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://lsirwww.epfl.ch/"/></input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://lsirwww.epfl.ch/"/> </output> </operation></binding> Implement abstract messages according to SOAP protocol

  24. Sample Soap Message <?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2002/12/soap-envelope"> <env:Header> <m:HelloIF_sayHello xmlns:m="http://lsirwww.epfl.ch/" env:role="http://www.w3.org/2002/12/soap-envelope/role/next" env:mustUnderstand="true"> </m:HelloIF_sayHello> </env:Header> <env:Body> <p:String_1 xmlns:p="http://lsirwww.epfl.ch/"> Hello World! </p:String_1> </env:Body> </env:Envelope> SOAP client SOAP server Request message Response message

  25. Service Access <service name="HelloWorldService"> <port name="HelloIFPort" binding="HelloIFBinding"> <soap:address location="REPLACE_WITH_ACTUAL_URL"/> </port></service> Location not known before deployment

  26. Step 3. Deploy Service at Server shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Tie will be created, service location stored in WSDL

  27. Deploy Service • Web service tie is implemented as servlet • Servlet is a Java application that can interact with Web Server (also JSPs are implemented as servlets!) • Tie automatically generated at deployment

  28. WAR file and Context Root WAR file is archive collecting all needed files (like JAR) Contect Root is location on Web Server

  29. Provide WSDL File As generated before

  30. Provide Service Implementation Note: WSDL does not know about the implementation!

  31. Service Access Note: Multiple Ports may have been provided in WSDL!

  32. WSDL after Deployment <service name="HelloWorldService"> <port name="HelloIFPort" binding="tns:HelloIFBinding"> <soap:address location= "http://lsir-cis-pcx:8009/hello/helloService"/> </port></service> This can be published via UDDI

  33. Step 4. Publish Service shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Client can locate the service querying UDDI

  34. UDDI

  35. Step 5. Generate Client Proxy shopping web service? WSDL URIs Web Service Client UDDI Discovery publish WSDL URIs Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Stubs can be generated from WSDL automatically

  36. Generate Stubs • Client Configuration File<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config"> <wsdl location="build/HelloWorld.wsdl" packageName="iis"/> </configuration> • Automatically created using WSDL and client configuration filewscompile -gen:client -d build -classpath build config-client.xml

  37. Step 6. Write Client to Invoke Proxy shopping web service? WSDL URIs Web Service Client UDDI Discovery publish Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Stubs can be generated from WSDL automatically

  38. Client Application package iis; import javax.xml.rpc.Stub; public class HelloClient { private String endpointAddress; public static void main(String[] args) { try { Stub stub = createProxy(); stub._setProperty (javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY, args[0]); HelloIF hello = (HelloIF)stub; System.out.println(hello.sayHello(args[1])); } catch (Exception ex) { ex.printStackTrace(); } } see next slide WS address parameter

  39. Creating Proxy (Stub) private static Stub createProxy() { return (Stub) (new HelloWorldService_Impl().getHelloIFPort());} attaching _Impl to the service name is an implementation-specific naming convention

  40. Compiling and Packaging compile javac –classpath system_jars:server_class_files:stub_class_files HelloClient.java package jar cvf hello-client.jar all_client_class_files:all_server_class_files Note: in the exercise the commands are automated by using the asant scripting utility provided by Sun J2EE

  41. Step 7. Execute Client shopping web service? WSDL URIs Web Service Client UDDI Discovery publish Web Service Description WSDL SOAP pkg request Proxy Packaging Proxy SOAP pkg response Transport Network Client invokes service (almost) like a local method

  42. Invoke Client java –classpath hello-client.jar:jwsdp-jars hello.HelloClient "Hello World!" Generated at Server – Displayed at Client

More Related