Formation Formation Web Services Web Services septembre 2010 – Paris
- Formation SPRING A propos d’Objis… Centre de formation depuis 2005 Spécialiste technologies Java/J2ee Formations intra/inter entreprises 70% de pratique Paris – Lyon – Dakar Sponsor salon Solutions Linux 2010 + de 100 tutoriaux Java/j2ee sur Formation Web Services
- Formation SPRING Sommaire Intro : SOA, WS, standards et interropérabilité Fondamentaux Web services SOAP avec Java 6 Bonne pratique : validation conformité de votre service Bonne pratique : lecture / compréhension WSDL Bonne pratique : dévelopement. WS 'Document' Bonne pratique : création intercepteurs (Handlers) Bonne pratique : productivité dev/design WS avec IDE Bonne pratique : méthodologie dev web service Fondamentaux architecture REST Critère choix WS 'lourd' (SOAP) ou 'léger' (REST) Fondamentaux Sécurité WS Fondamentaux : valeur ajoutée des specs WS-* Bonne pratique : mise en oeuvre WS-* via frameworks Bibliographie Formation Web Services
- Formation SPRING Objectifs 1) Comprendre les 4 phases d'un projet 2) Identifier les 12 facteurs clés de succès 3) Se mettre en situation de chef de projet Formation Web Services
- Formation SPRING Objectifs 1) Comprendre les 4 phases d'un projet 2) Identifier les 12 facteurs clés de succès 3) Se mettre en situation de chef de projet Formation Web Services
- Formation SPRING Les 4 phases cl 1) Comprendre les 4 phases d'un projet 2) Identifier les 12 facteurs clés de succès 3) Se mettre en situation de chef de projet Formation Web Services
- Formation SPRING La pyramide SOA Jusqu'où le SI met en oeuvre SOA ? Formation Architecture SOA 1) Sécurité 2) Transactions 3) Qualité service
- Formation SPRING Environnement SOA 8 Services bas niveau Systèmes métiers Services composites Processus métiers orchestrée Services de présentation ES B Service ERPPortailSCMCRM Adaptateurs TransformationTransformation MessagesMessages RoutageRoutage - Formation Web Services
- Formation SPRING Rôles projet SOA Formation Architecture SOA
- Formation SPRING Orchestration avec BPEL Formation Architecture SOA
- Formation SPRING Partie 1 : Introduction 1) Comprendre bénéfices, challenges, standards WS Formation Web Services
- Formation SPRING Apparition web services et SOA : contexte métier Besoin : mettre le système d'information (SI) de l'entreprise au service du business !! AVANT : SI = ensemble d'applications Gestion relation client (CRM) Gestion flux logistique (SCM) Progiciel de gestion entreprise (ERP) Gestion processus métiers (BPM) Entrepot de données (Datawarehouse)... DEMAIN : SI = ensemble de services Web service : bras armé de SOA ! Formation Web Services
- Formation SPRING Apparition Web Services : contexte technique CORBA, EJB et DCOM basés sur RPC Pb : Couplage fort EJB et DCOM liés à une plateforme Pb : manque d'intéropérabilité CORBA EJB complexe CORBA nécessite IDL EJB nécessit(ait) XML complexe : nouveaux standards ouverts XML / Web Services WSDL / SOAP / UDDI JAX-RPC / JAX-WS Formation Web Services
- Formation SPRING Web Services : les standards ouverts WSDL (Web Service Description Language) est le format XML décrivant le endpoint. UDDI (Universal Description, Discovery and Integration) est un annuaire de publication des services web. SOAP (Simple Object Access Protocol) permet un échange de données entre systèmes hétérogènes. SOAP : 2 approches Approche RPC (Synchrone, échange types primitifs) Approche Document (Asynchrone, échange Objets) Permet couplage faible ! Clé architecture SOA Formation Web Services
- Formation SPRING Architecture Web Services Formation Web Services Web service Web Method EndPoint Web Method EndPoint Application cliente Requête Réponse UDDI WSDL Localise Récupère métadonnées défini Recherche WSDLs
- Formation SPRING Standards Web services : Le monde de JAX-WS 16 SOAP JAXB JAX-R SCHEM A XML JAX-P WSDL MTOM SAAJ JAX-WS Java SE 6 UDDI inclus basé sur Fournit API haut niveau pour utilise Fournit API bas niveau pour Annuaire pour définit manipule Représenté par Fournit clients pour accéder Transformation JAVA / XML - Formation Web Services
- Formation SPRING Standards Web services JSR 224 : JAX-WS (API haut niveau pour WS) – JSR 181 : métadonnées (annotations) – JSR 109 : Modèle prog. Web Services JEE – JSR 67 : SAAJ (API bas niveau créer/manipuler WS) – Formation Web Services
- Formation SPRING Standards Web services et API Java 6 Métadonnées (annotations facilitant dév Formation Web Services javax.jws javax.jws.soap javax.xml.ws javax.xml.ws.handler javax.xml.ws.handler.soap javax.xml.ws.http javax.xml.ws.soap javax.xml.ws.spi javax.xml.ws.wsaddressing javax.xml.soap SAAJ (API bas niveau créer/manipuler Message : En-tête, corps, Attachements...) → SOAPHeader, SOAPBody, SOAPFault... JAX-WS (API haut niveau pour WS) → EndPoint, @WebServiceClient
- Formation SPRING Standards Web services : Le monde WS-* Formation Web Services
- Formation SPRING Frameworks Web services : Implémentation specs WS-* Formation Web Services Source :
- Formation SPRING Interropérabilité Web Services Consortium WS-I ( : promouvoir l'interropérabilité des services web à travers les plattes formes,OS, langages de programmationwww.ws-i.org WS-I : plusieurs éditeurs dont Microsoft, IBM, Oracle Spécification WS-Basic Profile : recommandations contribuant à créer des services web interropérables –Ex : Jee5 est compaticle WS-Basic Profile 1.1 Bonne pratique : testez la conformité de vos WS ! –Outils : 'Monitor' et 'Analyzer' fournit par le WS-I
- Formation SPRING Interropérabilité Web Services : Test conformité Etape 1 : Monitor.bat –produit fichier de traces C/S (log.xml) Etape 2 : Analyzer.bat –Analyse le fichier de traces –produit rapport conformité (report.xml) - Formation Web Services
- Formation SPRING Interropérabilité Web Services : Exemple résultat outil 'Monitor' - Formation Web Services
- Formation SPRING Interropérabilité Web Services : Exemple résultat outil 'Analyzer' - Formation Web Services
- Formation SPRING Approches de développement WS Bottom-up (ou 'code first') : Du code vers le WSDL Top-down (ou 'contract first') : du WSDL vers le code - Formation Web Services
- Formation SPRING Inconvénients Approche bottom-Up Ne respecte pas la 'neutralité du langage' Orienté 'programmeur' et pas 'utilisateur' - Formation Web Services
- Formation SPRING Anatomie WSDL : 5 sections clés Formation Web Services 1 : types 4 : binding 3 : porType 2 : message 5 : service
- Formation SPRING Section clé WSDL N°1 : 'types' Types de données utilisés par le WS Si WS Rpc : vide (Types simples : chaine, int...) Si WS Document : inclus, pointe vers ou importe XSD - Formation Web Services
- Formation SPRING Section clé WSDL N°1 : 'types' Exemple 1 (WS Document types simple) - Formation Web Services
- Formation SPRING Section clé WSDL N°1 : 'types' Exemple 2 (WS Doc. types complexes) - Formation Web Services 1 2
- Formation SPRING Section clé WSDL N°1 : 'types' Exemple 2 (WS Doc. types complexes) - Formation Web Services 4 3
- Formation SPRING Section clé WSDL N°2 : 'message' - Formation Web Services Types de données utilisés par le WS Construits à partir des types données section 'types' Remarque : ordre messages indique pattern service
- Formation SPRING Section clé WSDL N°3 : 'porType' - Formation Web Services Décrit les opérations, le 'savoir-faire' du WS Equivalent strict de l'interface Java du service Opérations identifiées code WS
- Formation SPRING Section clé WSDL N°3 : 'portType' Pattern de service - Formation Web Services
- Formation SPRING Section clé WSDL N°4 : 'bindings' - Formation Web Services Section la plus 'concrète' et la plus 'complexe' Info clé 1 : Protocole transport à utiliser pour envoi / réception msg SOAP Info clé 2 : le Style : 'rpc' ou 'document' –Specs : par défaut 'document' Info clé 3 : le format de données : 'litteral' ou 'encoded' –Specs : par défaut 'litteral' –Attention : 'encoded' non respect Basic profile !
- Formation SPRING Section clé WSDL N°5 : 'bindings' - Formation Web Services 1 3 2
- Formation SPRING Web Services : style 'Rpc' ou 'Document' Style 'Rpc' : historiquement le plus utilisé Style 'Document' : permet de décrire la structure du message via fichier xsd externe. Plus souple ! Info : Style 'Document' par défaut - Formation Web Services
- Formation SPRING Section clé WSDL N°5 : 'service' - Formation Web Services Spécifie 1 ou plusieurs Endpoints où les fonctionalités du WS sont disponibles Représente physiquement les 'ports' Port = interface (portType) + implémentation (binding) Analogie avec port réseau Ex : accès au service sur : interface implémentation
- Formation SPRING WS avec types complexes - Formation Web Services
- Formation SPRING WS avec types complexes Exemple classe accès données - Formation Web Services
- Formation SPRING Bonnes pratiques WS types complexes : Outils wsgen et ws import - Formation Web Services 1)Compilation WS et javabeans : javac -d. *.java 2)Génération classes utilitaires pour le WS (création du répertoire jaxws) wsgen -cp. -keep com.objis.demowebservices.document.team.Teams 3)Publication du WS java -cp. com.objis.demowebservices.document.team.TeamsPublisher 4)Génération classes utilitaires pour le client (dans répertoire teamC): wsimport -p teamC -keep 5) Codage du Client TeamsClient (s'aider du TP client RPC ainsi que du code source de teamC.TeamsService) 6) Lancement du client java -cp. TeamsClient Avoir copie code source
- Formation SPRING WS avec types complexes - Formation Web Services 2)Génération classes utilitaires pour le WS (création du répertoire jaxws) wsgen -cp. -keep com.objis.demowebservices.document.team.Teams 1)Compilation WS et javabeans : javac -d. *.java
- Formation SPRING WS avec types complexes - Formation Web Services 4) Génération classes utilitaires pour le client (dans répertoire teamC): wsimport -p teamC -keep 3)Publication du WS → Utiliser le codede la classe TeamsService.java généré du service pour coder votre client → repérer méthodes xxxxPort
- Formation SPRING WS avec types complexes - Formation Web Services
- Formation SPRING WS avec types complexes - Formation Web Services 5) Codage & compilation client TeamsClient (à partir du code source de teamC.TeamsService) client Extrait code TeamsService généré coté client
- Formation SPRING WS avec types complexes 6) Lancement du client : java -cp. TeamsClient
- Formation SPRING JAXB : de JAVA à XML Java API for XML Binding Manipuler avec Java les données des messages XML Vous sauve de XML schéma, Sax, DOM ! Marshaling = transformation Java → XML - Formation Web Services
- Formation SPRING JAXB : de JAVA à XML - Formation Web Services
- Formation SPRING Travailler avec JAXB en 2 étapes Etape 1 : générer/compiler 'classes dérivées' à partir XML Schema Etape 2 : lancer votre appli pour unmarshaler / Marshaller –INFO : étape de validation XML Optionnelle - Formation Web Services
- Formation SPRING XML Schema Permet de décrire la grammaire d'un doc. XML + précis que DTD : –Types : decimal, date, fixed, string –Contraintes : pattern value, minOccurs, positiveInteger –Support des Namespaces Analogie avec JAVA - Formation Web Services
- Formation SPRING Traitement à la volée de messages avec Handlers Manipuler message coté client AVANT de l'envoyer Manipuler message coté serveur AVANT de le traiter Empécher un intermédiaire de valider (FAULT) Sécurité Logs Cache Transactions - Formation Web Services
- Formation SPRING Traitement à la volée de messages : exemple sécurité - Formation Web Services
- Formation SPRING Etape 1 : créer Handler (1/2) - Formation Web Services 1
- Formation SPRING Etape 1 : créer le Handler (2/2) - Formation Web Services
- Formation SPRING Etape 2 : Configurer le handler dans un fichier XML - Formation Web Services
- Formation SPRING Etape 3 : Associer le Handler au service - Formation Web Services
- Formation SPRING Etape 4 : Lancer le client - Formation Web Services
- Formation SPRING Handler coté client : 2 méthodes (déclarative et programmative) - Formation Web Services 1) dans classe Service générée 2) ajout code dans classe client
- Formation SPRING SOA : 5 caractéristiques clés Contrat de service Transparence du service Granularité du service Composition du service Annuaire de service Formation Architecture SOA
- Formation SPRING Caractéristique SOA N°1 : interface / contrat de service Quelles opérations disponibles entre le client et le service ? Quelles données en paramètres ?Comment solliciter le service ? Solution : WSDL + XSD : description format message XML pour chaque opération WSDL 1.1 complexe Ports ? Bindings ? WSDL 2.0 plus simple Courbe apprentissage plus réduite WS-Adressing Formation Web Services
- Formation SPRING Caractéristique SOA : interface / contrat de service 61 Service(s) 1Opération XSD Message In/Out 2Opération XSD Message In/Out - Formation Web Services
- Formation SPRING Caractéristique SOA N° 2: Transparence Appeler un service sans avoir besoin de connaître son emplacement physique sur le réseau Solution : WS-Adressing Définir dans le message le endpoint / l'action pour un Web Service basé sur Soap Notion de 'destination logique' Formation Web Services
- Formation SPRING Caractéristique SOA N° 2: Transparence Formation Architecture SOA ?
- Formation SPRING Caractéristique SOA N° 2: Transparence Formation Architecture SOA
- Formation SPRING Caractéristique SOA N° 2: Transparence Formation Architecture SOA
- Formation SPRING Caractéristique SOA N° 3: Granularité et état Ex : besoin d'un service web qui ajoute un utilisateur dans le CRM du SI Solution 1 : Un seul 'gros' service AjouterClient (OrganisationId) → id spécifique CRM PB : limite réutilisabilité du service par autres clients Solution 2 : plusieurs petits' services RechercherOrganisationIdClient(Client) AjouterAdresseClient() Maximiser la réutilisabilité ! La gestion de l'état ajoute de la complexité Ex service nécessitant validation (id en session ?) Formation Architecture SOA
- Formation SPRING Caractéristique SOA N°4 : Composition de services Maximiser la création de services composites 1 service = Ensemble d'autres services Solution : norme BPEL : orchestration de services Formation Architecture SOA
- Formation SPRING Caractéristique SOA N°5 : Annuaire & publication Aujourd'hui peu d'entreprises utilisent UDDI Peu d'annuaires publics (essais de SAP,IBM..) La 'découverte automatique' se heurte au business Réalité : besoin de contrats commerciaux ! En pratique : Pour web services SOAP, un WSDL clair suffit pour lister les services et opérations disponibles Annuaire interne Ex : Juddi Formation Architecture SOA
- Formation SPRING Les technologies d'une plate forme SOA Formation Architecture SOA
- Formation SPRING Architecture SI avec SOA Formation Architecture SOA
- Formation SPRING Solutions pour Sécurité 1) Transport HTTPS 2) Authentification 3) WS-Security pour securite indép. transport Formation Architecture SOA
- Formation SPRING Exemples URL REST Formation Architecture SOA
- Formation SPRING Traitement requête HTTP avec REST Lorsqu'une requête HTTP arrive, 4 choses à faire : 1) Identifier la méthode HTTP (exemple : POST) 2) Convertir le message (body) du format spécifié (XML ou JSON) vers format serveur (Ex : JAVA) 3) réaliser l'opération demander (Ex : POST -> écrire ) 4) Convertir la réponse en flux HTTP au format demandé (ex : Accept : application/json) Formation Architecture SOA
- Formation SPRING Contrainte REST...et API JAX-RS Contrainte : fournir implémentation pour toutes les méthodes HTTP : POST, GET, PUT, DELETE d'où le standard JAR-RS (Java Api for RestFull Web Services) : sémentique création WS façon REST Equivalent REST de WSDL : WADL Web Application Description Langage Pas encore officiel Frameworks 'Jersey' et 'Restlet' le génèrent Formation Architecture SOA
- Formation SPRING Les risques du couplage faible 1) Les nouveaux standards de communications (XML, SOAP, WSDL, UDDI....) sont ouverts. 2) Les nouveaux standards de communications ont été développé sans une approche sécurité. 3) Si'ils sont utilisés 'tel quels', ils sont complètement non sécurisé ! Exemple : communication Usine / Agences AVANT : Interfaces propriétaires sécurité DEMAIN : services exposés via WS Formation Architecture SOA
- Formation SPRING Exemple B2B AVANT SOA : Communication par VPN Formation Architecture SOA
- Formation SPRING Exemple B2B AVEC SOA : Communication par Web Services Formation Architecture SOA
- Formation SPRING Solutions pour Sécurité 1) Si WS = WAR (Pojo annoté) config. JAAS Authentification (BASIC, FORM, DIGEST, CERT) Autorisation DBRealm, LdapRealm... 2) HTTPS : Certificats, signature, Encryption XML Utiliser keytool (générer clés, certificat, Csr...) 3) Intercepteurs SOAP 'perso' (handlers) 4) Fédération d'identité (SAML / SSO) 5) Intercepteurs WS-Security (ajout infos headers) sécurité indép. Couche transport utilisée ! Ex CXF : Formation Architecture SOA
- Formation SPRING Particularités REST 1) centré POJO 2) centré HTTP 3) indépendence format (XML/JSON) 4) indépendance conteneur 5) ok avec conteneur JEE Formation Architecture SOA
- Formation SPRING Dev REST avec CXF 1) Bonne intégration avec Spring 2) Plusieurs stratégies binding (JAXB, JSON, AEGIS, XMLBean) 3) API client (pas ds specs jax-rs) 4) Sécurité (Spring Security) 5) Filtres / Intercepteurs WS-* Formation Architecture SOA
- Formation SPRING Méthode dev appli REST 1) Créer objets Java de Requête et Réponse (Ex Category, Book) 2) Fournir Binding pour objet Requête et Réponse (Exemple JAXB audessus nom classe pour personnaliser namespace) 3) Créer classes d'implémentation (CategoryService) & les annoter avec annotations 4) Test unitaires 5) Création de clients invoquant méthodes HTTP (via Proxy ou via objet cxf tout prêt : org.apache.cxf.jaxrs.client.WebClient) 6) Déployer le service dans conteneur (rendre le service accessible via HTTP. Ex sans besoin de serveur j2ee avec classe : org.apache.cxf.jaxrs.JAXRSServerFactoryBean ) Formation Architecture SOA
- Formation SPRING Web Services 'lourd' SOAP (pour scénario d'intégration complexe) Spécification JAX-WS → Implémentation de référence : métro - Contrainte : messages format XML façon SOAP - Contrainte : interface décrite avec WSDL + Avantage : multi-protocoles : HTTP,FTP,SMTP, JMS - Architecture sous-jacente doit gérer nombreux besoins non fonctionnels : sécurité, transactions, transparence, coordination. –Specs : WS-Security, WS-Adressing,... - Architecture sous-jacente doit gérer traitement asynchrone. Pbs potentiels de fiabilité ! –Spec WSRM (Web Service Reliable Messaging) - Formation Web Services
- Formation SPRING Web Services 'léger' REST (pour scénario d'intégration simple) Spécification JAX-RS (RestFull Services) → Implémentation de référence JavaEE6 : Jersey + Pas de contrainte format message XML, ni de contrainte description interface WSDL - Contrainte : protocole transport HTTP + Complémentaire d'Ajax pour écrans web + Bonne pratique : mettre en oeuvre cache requêtes HTTP (attention limite cache serveurs web sur GET) + Intérressant si le critère bande passante est primordial (trop de headers avec SOAP !) –Ex : applications pour PDA - Formation Web Services
- Formation SPRING Jetons de sécurité (Security Token) Formation Architecture SOA 1 2
- Formation SPRING Signature de message (début) Formation Architecture SOA
- Formation SPRING Signature de message (fin) Formation Architecture SOA
- Formation SPRING Service de jeton sécurisés Formation Architecture SOA
- Formation SPRING Requete jeton sécurisés Formation Architecture SOA
- Formation SPRING Réponse jeton sécurisés Formation Architecture SOA
- Formation SPRING Bibliographie Web Services Up and Running Editions O'Reilly – 318 pages Web services specifications Microsoft Press – 360 pages Java SOA Cookbook Editions O'Reilly – 782 pages Formation Architecture SOA