Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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 user program DB History and Background Business to Business Security Internet Firewall Firewall Only port 80 Web Server Web Server Middleware Application server User program Already implemented DB Only port 80 Client stub Remote Procedure Call (RPC), CORBA or DCOM Not local directory Middleware Application server User program Server stub DB Already implemented History and Background The idea of Web Services Client Stub Wrapping system internet Wrapping system Stub Server • 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 … WS Components Service registry find Service requester publish Service description bind Service provider Service description Service interface Service • SOAP (simple object access protocol) as transport protocol • WSDL (web service description language) • UDDI (universal description and discovery protocol) SOAP Client Stub, runtime service location SOAP system Serialized XML Doc Wrap doc in HTTP Post request HTTP support (web client) Stub, runtime adapters SOAP system Serialized XML Doc Wrap doc in HTTP Post request HTTP support (web client) call Server do() INTERNET SOAP as RPC mechanism SOAP SOAP 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 Header block Header Block Body 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/user s/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 files javac *.java 6. Deploy the web service using AXIS AdminClient java org.apache.axis.client.AdminClient … deploy.wsdd 7. Write the client using food_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