Download - Ter Web Service Intro
WEB SERVICES
Tébourbi Riadh SUP’COM, 2006, [email protected]://www.supcom.mincom.tn/~tebourbi/index3.htm
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Web Services avec JAVA19
4) Ajout du web service
Web Services, Riadh Tébourbi, 2006
Web Services avec JAVA20
5) Création de la web méthode: « somme »
Web Services, Riadh Tébourbi, 2006
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
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
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
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
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
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
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