27
WEB SERVICES Tébourbi Riadh SUP’COM, 2006, [email protected] http://www.supcom.mincom.tn/~tebourbi/index3.htm

Ter Web Service Intro

Embed Size (px)

DESCRIPTION

Intro aux web services

Citation preview

Page 1: Ter Web Service Intro

WEB SERVICES

Tébourbi Riadh SUP’COM, 2006, [email protected]://www.supcom.mincom.tn/~tebourbi/index3.htm

Page 2: Ter Web Service Intro

Généralités

3 générations d’applications Web

1 ° Génération Pages Web statiques (HTML)

2 ° Génération Des applications réelles

(Pages Web dynamiques, ASP, JSP, PHP, ...)

3 ° Génération Les Web services (basé sur XML)

2

Web Services, Riadh Tébourbi, 2006

Page 3: Ter Web Service Intro

Web Services : définition

Les Web Services : ensemble de protocoles qui permettent de :

Faire communiquer des programmes tournant sur des machines différentes et écrits dans des langages de programmation différents.

Invoquer des fonctions distantes, présentes sur des systèmes distribués et hétérogènes, grâce à des protocoles standards indépendamment de:

•la plate-forme (LINUX, Windows,…)•l’implémentation (Java, C++, Visual Basic,…)•l’architecture sous-jacente (.NET, J2EE,…)

3

Web Services, Riadh Tébourbi, 2006

Page 4: Ter Web Service Intro

Fonctionnement

Les services web permettent l'appel d'une méthode d'un objet distant en utilisant un protocole web pour transport (http en général) et XML pour formater les échanges. Les services web fonctionnent sur le principe du client serveur:

un client appelle les service web le serveur traite la demande et renvoie le résultat au client le client utilise le résultat

4

Web Services, Riadh Tébourbi, 2006

Page 5: Ter Web Service Intro

Technologies utilisées

Les services web utilisent trois technologies :

SOAP (Simple Object Access Protocol) pour le service d'invocation : il permet l'échange de messages dans un format particulier

WSDL (Web Services Description Language) pour le service de description : il permet de décrire les services web

UDDI (Universal Description Discovery and Integration) pour le service de publication : il permet de référencer les services web

5

Web Services, Riadh Tébourbi, 2006

Page 6: Ter Web Service Intro

SOAP: Simple Object Access Protocol

SOAP: une norme de communication qui standardise l'échange de messages en utilisant un protocole de communication et XML pour formater les données.

Le protocole le plus utilisé est HTTP pour sa facilité de mise en œuvre mais d'autres protocoles peuvent être utilisés tel que FTP (tous les protocoles capables de véhiculer un flux d'octets peuvent être utilisés).

SOAP peut être utilisé :

pour l'appel de méthodes (SOAP RPC) pour l'échange de message (SOAP Messaging)

6

Web Services, Riadh Tébourbi, 2006

Page 7: Ter Web Service Intro

SOAP: structure

SOAP définit la structure principale du message, dite « enveloppe » qui contient deux parties : en tête (Header) : facultatif le corps (Body) : obligatoire

Le corps est composé d'un ou plusieurs blocs. Un bloc contient des données ou un appel de méthode avec ces paramètres.

La partie SOAP Fault permet d'indiquer qu'une erreur est survenue lors des traitements du service web

7

Web Services, Riadh Tébourbi, 2006

Page 8: Ter Web Service Intro

WSDL: Web Services Description Language

WSDL : une norme qui utilise XML pour décrire des services web

ObjectifDécrire les services comme un ensemble d’opérations et de messages abstraits relié (bind) à des protocoles et des serveurs réseaux

Grammaire XML (schema XML)Modulaire (import d’autres documents WSDL et XSD)

8

Web Services, Riadh Tébourbi, 2006

Page 9: Ter Web Service Intro

Exemple

<WebMethod()> _Public Function HelloWorld() As String

Return "Hello World"End Function

<WebMethod()> _Public Function Somme(ByVal a As Integer, ByVal b As Integer) As Integer

Return a + bEnd Function

Deux web méthodes sur le serveur:

9

Web Services, Riadh Tébourbi, 2006

Page 10: Ter Web Service Intro

Fichier WSDL- <wsdl:types>- <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">- <s:element name="HelloWorld"><s:complexType /> </s:element>

- <s:element name="HelloWorldResponse">- <s:complexType>- <s:sequence><s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult" type="s:string" /> </s:sequence></s:complexType></s:element>

- <s:element name="Somme">- <s:complexType>- <s:sequence><s:element minOccurs="1" maxOccurs="1" name="a" type="s:int" /> <s:element minOccurs="1" maxOccurs="1" name="b" type="s:int" /> </s:sequence></s:complexType></s:element>

- <s:element name="SommeResponse">- <s:complexType>- <s:sequence><s:element minOccurs="1" maxOccurs="1" name="SommeResult" type="s:int" /> </s:sequence></s:complexType></s:element></s:schema></wsdl:types>

10

Web Services, Riadh Tébourbi, 2006

Page 11: Ter Web Service Intro

Requête SOAP

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">

<soapenv:Body><tem:Somme>

<tem:a>4</tem:a><tem:b>10</tem:b>

</tem:Somme></soapenv:Body>

</soapenv:Envelope>

11

Web Services, Riadh Tébourbi, 2006

Page 12: Ter Web Service Intro

Réponse SOAP

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soap:Body><SommeResponse xmlns="http://tempuri.org/">

<SommeResult>14</SommeResult></SommeResponse>

</soap:Body></soap:Envelope>

12

Web Services, Riadh Tébourbi, 2006

Page 13: Ter Web Service Intro

Exemple de Service Web13

Client mobile, web, etc Serveur

BD cartographique

Service web cartographique

1

23

1) Le client envoie une requête au service web

2) Le service web traite la requête et génère à la volée une carte raster géoréférencée à partir des données cartographiques vecteur

3) Le service web envoie le résultat au clientWeb Services, Riadh Tébourbi, 2006

Page 14: Ter Web Service Intro

Outils14

La Plate-forme .NET (période 2)

Data Access GUI Security

(et autres...)DebuggingFile I/O

XML/SOAP

Threading

La bibliothèque de classes de base

Web Services, Riadh Tébourbi, 2006

Page 15: Ter Web Service Intro

Outils15

JWSDP

Java Web Services Developer Pack (JWSDP) : un ensemble d'outils et d'API qui permet de faciliter le développement des services web et des applications web avec Java.

contient les API particulières suivantes :

•Java XML Pack : Java API for XML Processing (JAXP), Java API for XML-based RPC (JAX-RPC), Java API for XML Messaging (JAXM), Java API for XML Registries (JAXR) •Java Architecture for XML Binbing (JAXB) •JavaServer Pages Standard Tag Library (JSTL) •Java Secure Socket (JSSE) •SOAP with Attachments API for Java (SAAJ)

Le JWSDP contient les outils suivants : •Apache Tomcat•Java WSDP Registry Server (serveur UDDI) •Web application development tool•Apache Ant Web Services, Riadh Tébourbi, 2006

Page 16: Ter Web Service Intro

Web Services avec JAVA16

1) Installation des outils:

Ingrédients:

JDK: jdk-1_5_0_07-windows-i586-p.exe

Outil de développement: netbeans-5_5-beta2-windows.exe

Serveur d’application: tomcat50-jwsdp.zip , à décompresser dans tomcat50-jwsdp

JWSDP: jwsdp-2_0-windows-i586.exe

Web Services, Riadh Tébourbi, 2006

Page 17: Ter Web Service Intro

Web Services avec JAVA17

Pour tomcat: JAVA_HOME set to C:\Program Files\Java\jdk1.5.0_07)

2) Configurations:

Sur NetBeans: tools server manager: choisir le serveur d’application tomcat50-jwsdp

Add server : server = Tomcat 5.0, Name = Tomcat 5.0

Catalina home = repertoire tomcat50-jwsdp

Web Services, Riadh Tébourbi, 2006

Page 18: Ter Web Service Intro

Web Services avec JAVA18

3) Premier Web Service: une web méthode qui retourne la somme de deux entiers

- File new project web web application

- Project name: premierws- Server: tomcat 5.0

- Clic droit Propriétés projet: source level =1.5

Web Services, Riadh Tébourbi, 2006

Page 19: Ter Web Service Intro

Web Services avec JAVA19

4) Ajout du web service

Web Services, Riadh Tébourbi, 2006

Page 20: Ter Web Service Intro

Web Services avec JAVA20

5) Création de la web méthode: « somme »

Web Services, Riadh Tébourbi, 2006

Page 21: Ter Web Service Intro

Web Services avec JAVA21

5) Déployer le web service

Démarrer Tomcat: Program files sun microsystemsjava web ..start tomcat

Compiler le projet: Build project

Deployer le ws: Deploy project

Tester et visualiser le WSDL:http://localhost:8080/premierws/myws?wsdl

Web Services, Riadh Tébourbi, 2006

Page 22: Ter Web Service Intro

Tester le Web Service22

Soap UI: permet de tester les web méthodes d’un web service sans a voir à développer un web client

File new WSDL project

Add WSDl from url http://localhost:8080/premierws/myws?wsdl

Web Services, Riadh Tébourbi, 2006

Page 23: Ter Web Service Intro

Créer un web client JAVA23

- Sur Netbeans: file new project général java applicationProject name=wsclient

- Project new web service client

1) Création de l’application java cliente

Web Services, Riadh Tébourbi, 2006

Page 24: Ter Web Service Intro

Créer un web client JAVA24

2) Appel de la web méthode « somme »

Dans une méthode (main par exemple) clic droit web service client resources call web service operation

Enfin: Build project run project

Web Services, Riadh Tébourbi, 2006

Page 25: Ter Web Service Intro

Allez plus loin25

Une web méthode qui retourne une instance d’une classe: contient plusieurs attributs.Avantages: Envoyer plusieurs données en même temps.Exemple: rajouter dans le WS la class testclass:

public class testclass {

public int unentier;public String unechaine;public String tableau[]={"SERCOM", "IST", "RSM", "IST"};

/** Creates a new instance of testclass */public testclass() {

unentier=3;unechaine="Bonjour Indp ";

}

Web Services, Riadh Tébourbi, 2006

Page 26: Ter Web Service Intro

26

Ajout d’une web méthode qui renvoie une instance de la classe testclass

@WebMethod(operationName="appel_testclass")public testclass appel_testclass() {

// implement the web service operation heretestclass t = new testclass();

return t;}

Web Services, Riadh Tébourbi, 2006

Page 27: Ter Web Service Intro

27

Coté client: appel de la web méthode:

public void callTestclass() {try { // Call Web Service Operation

wsclient.MywsService service = new wsclient.MywsService();wsclient.Myws port = service.getMywsPort();// TODO process result herewsclient.Testclass result = port.appelTestclass();//System.out.println("Result = "+result);

//affiche les datasSystem.out.println("Result = "+result.unechaine + result.unentier);for(int i=0;i<result.tableau.size();i++) System.out.println(result.tableau.get(i));System.out.println(result.getUnechaine());

} catch (Exception ex) {// TODO handle custom exceptions hereSystem.out.println(ex.toString());

} }/*** @param args the command line arguments*/public static void main(String[] args) {

// TODO code application logic herenew Main().callTestclass();

} Web Services, Riadh Tébourbi, 2006