EuroFIR Web Services General introduction to Web services and an implementation example Karl...
-
Upload
kelsie-babcock -
Category
Documents
-
view
218 -
download
4
Transcript of EuroFIR Web Services General introduction to Web services and an implementation example Karl...
EuroFIR Web Services
General introduction to Web services and an implementation
example
Karl Presser
Agenda
1. History and background of Web services
2. WS Components
• SOAP
• WSDL
• UDDI
3. REST and Mashups
4. An example using Apache AXIS
History and Background
The original purpose of HTTP was to provide a way to publish and retrieve hypertext pages over the internet
Browser Web Server
Middleware
Application server
DB
user program
History and BackgroundBusiness to Business
Web Server
Middleware
Application server
DB
User program
Web Server
Middleware
Application server
DB
User program
Internet
Firewall Firewall
Remote Procedure Call (RPC),CORBA or DCOM
Client stub
Server stub
directory
Not local
Already implemented
Only port 80 Only port 80
Already implemented
Security
History and BackgroundThe idea of Web Services
• use existing software systems
• use port 80/25 to get through all firewalls
• use a standard representation schema, e.g. xml
• make it platform independent
• make it programming language neutral
• construct it modularly for reuse
• make it secure, reliable, transactional and …
Client
Server
Stub
Stub
Wrapping system
Wrapping system
internet
Service requester
WS Components
• SOAP (simple object access protocol) as transport protocol
• WSDL (web service description language)
• UDDI (universal description and discovery protocol)
Service registry
Service provider
bind
find publish
Service description
Service interface
Service
Service description
SOAP
Client
call
Stub, runtime service location
SOAP system
Serialized XML Doc
Wrap doc in HTTP Post request
HTTP support (web client)
SOAP as RPC mechanism
Server
do()
Stub, runtime adapters
SOAP system
Serialized XML Doc
Wrap doc in HTTP Post request
HTTP support (web client)
SOAPSOAP is …
• a message construct: A message format for communication using XML
• a processing model: Rules for SOAP message
• a extensibility model: How to extend basic massages with specific information
• a protocol binding framework: Allow different protocols like HTTP or SMTP
• a convention on how to turn a RPC all into a SOAP message und vise versa
• Language independent
Envelope
Header
Body
Header block
Header Block
Body element
WSDL
• Describes the interface of a Web service using XML schema
• The types used in the service model
• The messages for communication
• The operations
• The mapping to transport protocols
• The location of the service provider
<element name =“food” type = tns:foodType”/>
<complexType name=“foodType”>
<all>
<element name=“id” type=“int”/>
<element name=“name” type=string”/>
…
</complexType>
<operation name="GetFood" pattern=“…"> <input messageLabel="GetMsg" element="tns:request"/>
<output messageLabel="SuccessfulMsg" element="tns:food"/> </operation>
<binding name="RESTfulInterfaceHttpBinding" interface="tns:RESTfulInterface" type="http://www.w3.org/ns/wsdl/http"> …/>
>endpoint adress= “…”…/>
UDDI
Originally, UDDI was build as an “Universal Business Registry” similar to a search engine like Google.
It contains
• business information like the name of the company
• business service offered by the company
• bindingTemplate which are technical information of the service
• tModel which can be used for additional information e.g. conditions for using the Web service
WS Standards and Spec
REST and Mashups
• REST is a collection of network architecture principles. It is used to describe interfaces which transmit domain-specific data over HTTP without further detail about the messaging layer
• Application state and functionality are provided using resources
• Every resource is uniquely addressable
• REST is stateless -> no need to store information
• For processes where a lot of context information is needed, the REST-url is getting longer and longer
Procedures:
getUser()
addUser()
removeUser()
updateUser()
REST examples:
http://example.com/users/
http://example.com/users/karl
userResource = new Resource('http://example.com/users/karl')
userResource.delete()
REST and Mashups
A Mashups is web application that combines data from more than one source into a new web service.
An example is the Chicago Police Department which has a Mashup that integrates their department’s database of reported crimes with Google Maps.
Apache Axis
Apache Axis is an implementation of the SOAP submission to W3C. It is a Java library that helps you to implement all tasks around SOAP and the installation on Apache AXIS is quite simple.
The following example shows simplified the steps that are needed:
1. Take a java class (food_apple) and write your methods:
public String food() { String s = “apple”;return s;
}
public long time() { return System.currentTimeMillis();
}
Apache Axis
2. Generate the WSDL file using Java2WSDL :javac food_apple
java org.apache.axis.wsdl.Java2WSDL –o food_apple.wsdl … food_apple
3. Generate the stub files using WSDL2Java:java org.apache.axis.wsdl.WSDL2Java … food_apple.wsdl
As a result you find food_appleService.java, food_appleSoapBindingSkeleton.java, food_appleBindingImpl.java, food_apple.wsdd and
food_apple.java which are used on the server side.food_appleServiceLocator.java, food_appleSoapBindingStub.java and food_apple.java
which are used on the client side.
Apache Axis
4. Copy your method from step 1 into the file food_appleSoapBindingImpl.java
5. Compile all filesjavac *.java
6. Deploy the web service using AXIS AdminClientjava org.apache.axis.client.AdminClient … deploy.wsdd
7. Write the client usingfood_appleServiceLocator l= new food_appleServiceLocator();food_appleSoapBindingStub stub = l.getfood_apple():
System.out.println(stub.food());System.out.println(stub.time());
Thanks for your attention