04/18/23Page 2
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.
04/18/23Page 3
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.
04/18/23Page 4
Endpoint, Port and binding
SOAP1.1Over http
SOAP 1.1 overhttps
Other. Ex:ebXML overSMTP
Port1 port2 port3
endpoint
Web services Client
Web service
https 1.1 transportsoap1.1 messages
04/18/23Page 5
Application Architecture
Weather Client
JAX-WS Stub
JAX-WS Runtime (APIs)
Transport
Weather ServiceEndpoint impl
JAX-WS Ties
JAX-WS Runtime (APIs)
TransportSOAP/HTTP
04/18/23Page 6
WS Interoperability Infrastructure
Network
XML Messaging
Service DescriptionWSDL
SOAP
HTTP
04/18/23Page 7
WS Stack
Network
XML-based Messaging
Service Description
Service Publication
Service Discovery
Service Flow
HTTP, FTP, MQEmail, IIOP
SOAP
WSDL
UDDI
UDDI
WSFL
Secu
rity
Man
ag
em
en
t
Qu
ality
of S
erv
ice
04/18/23Page 8
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
04/18/23Page 9
Anatomy of a WSDL document
Service (Name)
Porttype BindingAddress location
(URI)
Operation name
Input message
Output message
Protocol binding
Operation Location/path
Input name & type
Output name & type
Fault handling
TypeDefinition/
Target name Space/
XML Schema
04/18/23Page 11
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.
04/18/23Page 12
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.
04/18/23Page 13
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.
04/18/23Page 14
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 + "."; } }
04/18/23Page 15
Coding the Hello WS client
1. 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;
2. 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. 3. Invokes the port's sayHello method, passing to the service a name. String response = port.sayHello(name);
04/18/23Page 16
Development using an IDE
• An IDE supports tools for compilation, deployment, automatic generation of proxies, auto completion, auto import of packages, build tool etc.