180 likes | 221 Views
Web Services-based Distributed System. B. Ramamurthy. Web Services (Colouris). A web service provides a service interface enabling clients to interact with servers in a more general way than web browsers do. Clients access operations in the interface usually by XML messages over http.
E N D
Web Services-based Distributed System B. Ramamurthy
Web Services (Colouris) • A web service provides a service interface enabling clients to interact with servers in a more general way than web browsers do. • Clients access operations in the interface usually by XML messages over http. • However other architectural models such as REST and CORBA could access WS. • WSDL provides additional details than for standard operation: for encoding, security, communication and location.
Services, ports and bindings • Service endpoint interface (SEI) or service endpoint that defines one or more operations that the web service offers. • Access to an endpoint is provided by binding it to a protocol stack through a port. • A port has an address that the client can use to communicate with the service and invoke its operations. • An endpoint can be bound to different ports each offering a different suite of protocols for interaction.
Endpoint, Port and binding Web service endpoint Port1 port2 port3 Web services Client SOAP 1.1 over https SOAP1.1 Over http Other. Ex: ebXML over SMTP https 1.1 transport soap1.1 messages
Weather Client Weather Service Endpoint impl JAX-WS Stub JAX-WS Ties JAX-WS Runtime (APIs) JAX-WS Runtime (APIs) Transport Transport Application Architecture SOAP/HTTP
WS Interoperability Infrastructure Service Description WSDL XML Messaging SOAP Network HTTP
Security Quality of Service Management WS Stack Service Flow WSFL Service Discovery UDDI Service Publication UDDI Service Description WSDL XML-based Messaging SOAP HTTP, FTP, MQ Email, IIOP Network
WSDL • Web Services Definition Language for definition of WS in a standard format and for publication to allow discovery by computational agents. • Lets understand WSDL • http://www.w3.org/TR/wsdl#_wsdl • http://www.w3schools.com/wsdl/wsdl_documents.asp • http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl? • Lets look at the components of WSDL and look at Amazon.com ECS as example
Sample WSDL • http://www.w3.org/2001/04/wsws-proceedings/uche/wsdl.html
WS Lifecycle • Build: • Definition of service interface • Definition of service implementation • New services • Existing application into WS • Composing a WS out of other WS and applications • Source compiled and Stubs and Ties are generated. • Deploy: • Publication of the service interface and service implementation to service registry or service requestor. • Deployment of executables in an execution environment.
WS Lifecycle (contd.) • Run: A WS is available for invocation. Requestor can perform find and bind operation. • Manage: on going management and administration for security, availability, performance, QoS, and business processes.
Creation and consumption of WS • Based on Sun’s WS discussion. • The starting point for developing a JAX-WS web service is a Java class annotated with the javax.jws.WebService annotation. The WebService annotation defines the class as a web service endpoint. A WS method can also be created using annotation.
Coding WS Hello Server package helloservice.endpoint; import javax.jws.WebService; @WebService() public class Hello { private String message = new String("Hello, "); public void Hello() {} @WebMethod() public String sayHello(String name) { return message + name + "."; } }
Coding the Hello WS client • Uses the javax.xml.ws.WebServiceRef annotation to declare a reference to a web service. WebServiceRef uses the wsdlLocation element to specify the URI of the deployed service's WSDL file. @WebServiceRef(wsdlLocation="http://localhost:8080/helloservice/hello?wsdl")static HelloService service; • Retrieves a proxy to the service, also known as a port, by invoking getHelloPort on the service. Hello port = service.getHelloPort(); The port implements the SEI defined by the service. • Invokes the port's sayHello method, passing to the service a name. String response = port.sayHello(name);
Development using an IDE • An IDE supports tools for compilation, deployment, automatic generation of proxies, auto completion, auto import of packages, build tool etc.
Demo: Develop, deploy and consume a sample WS • We will use Netbeans IDE (any version above 6.5 should be fine).