- Formation Web Services

Slides:



Advertisements
Présentations similaires
1 Les technologies XML Cours 3 : Les Web Services – Implémentation – JAX-WS Février Version 1.0 -
Advertisements

Introduction aux services WEB
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
UML EPITECH 2009 UML1 - Introduction UML – Définition – Historique – UML en entreprise – Couverture Concepts – Objet – Classe –
GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
Logiciel Assistant Gestion d’Événement Rémi Papillié (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Système de gestion d'entrées pour un cinéma Scanvion Michel – Etudiant 4.
Séminaire EOLE Dijon Octobre 2008 Eole SSO.
Les systèmes d'information 1- Une pratique quotidienne 2- Les données 3- Approche conceptuelle 4- Notion de serveur 5- Conception d'un système d'information.
Formation 1 - Formation Architecture SOA Architecture SOA.
Créat. : 23/09/2016 Modif. : 23/09/2016 Bogdan Stefanescu > Connectivité CPS et Eclipse Solutions Linux 2006.
Formation 1 - Formation INTEGRATION CONTINUE Intégration continue et méthodes agile.
Formation 1 - Formation Web Services Web Services septembre 2010 – Paris.
Windows NT/2000/XP Enjeux et contraintes techniques Douzième partie La sécurité C. Casteyde Document diffusé sous licence GNU FDL.
Formation 1 - Formation Sécurité JAVA Sécurité JAVA.
1 UML: applications, études de cas ● Processus (Extreme Programming, Unified Process) ● Architectures ● Expression du besoin technique Conception Préliminaire.
Février 2006X. Belanger / Guilde Introduction à. Février 2006X. Belanger / Guilde Qu'est ce que Samba ? ● Implémentation libre du protocole CIFS/SMB (client.
- Formation ActiveMQ 1 1.
Formation 1 Formation ESB ServiceMix ESB ServiceMix.
1 Y a-t-il une place pour Opensocial dans l'enseignement supérieur ? David Verdin RENATER JRES - Toulouse – novembre 2011.
Fadhel jied Oussama hédhili V - conclusion IV - Les avantages et les inconvénients III - exemples II - aspect informatique I - introduction.
Windows NT/2000/XP Enjeux et contraintes techniques
AMUE – SIFAC Intégration Fichier Mouvements BDF
Framework EHop/Ecenvir
Communication client-serveur
Mise en place d’un système de partage de fichiers
Ch.1 : Modélisation des systèmes par SysML
Microsoft SQL Server La Base de Données des plates formes Windows NT
Les P G I Les Progiciels de Gestion Intégrés
Cours 12 : Les Web Services et UDDI Mars Version 1.0 -
Ingénierie des besoins - Février 05
Sécurisation de l’accès Internet
Identication & Authentication
OWL-S.
Chiffrement de bout en bout
Installation et Configuration Internet Information Server (IIS 5)
fonctionnalités iiS iis
Asynchronous Javascript And Xml
Août 2009.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Cours 8 : Les Web Services et XML-RPC Février Version 1.0 -
Introduction à Internet
A. DAAIF ENSET Mohammedia Université Hassan II Casablanca.
Service web Réalise par: Latifa Gamoun Mariem jridi Majdouline Hassni Service web Réalise par: Latifa Gamoun Mariem jridi Majdouline Hassni 1.
Message Oriented Middleware MOM - Beghdad abdelkrim -abass youcef.
Plan d'urbanisation Version / 02 / Nov Mai 2013 Passation des marchés Sommaire Une vision unifiée de l'urbanisation et de l'approche.
Outils et principes de base. Exemple d’application  Gestion de données d’enquête : Interface de saisie en ligne  insère directement les données dans.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
Mise en place d'un Serveur Radius pour la sécurité d'un réseau Wireless sous Windows Serveur Présenter par le Stagiaire : Etienne Mamadou Guilavogui.
Auditeur: Léonardo AMODIO Cours: NFE107
Architecture BD Récif.
Cours 10 : Les Web Services et WSDL Février Version 1.0 -
Catherine Cyrot - bibliothèques numériques - Cours 5
Exposé de système / réseaux IR3
Atos, Atos et le poisson, Atos Origin et le poisson, Atos Consulting ainsi que le poisson seul sont des marques déposées d'Atos Origin SA. © 2006 Atos.
FRAMEWORKS : XMLBEANS / STRIPES
Notions d'architecture client-serveur. Présentation de l'architecture d'un système client/serveur Des machines clientes contactent un serveur qui leur.
COURS ADMINISTRATION DE BASES DE DONNÉES IMPORT/EXPORT Karim LABIDI ISET Ch
Catherine Cyrot - bibliothèques numériques - Cours 5
ScienceDirect Guide d’utilisation de la base de données : ScienceDirect Pr R. EL OUAHBI.
Présentation PISTE pour les partenaires raccordés en API
Implémentation de FTP Rappel sur FTP Relation entre un site Web et FTP
Qu’est ce qu’une page web? Comment fonctionne un site web?
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Business Intelligence en ACube OLAP et Reporting avec ACubeOLAP et GRaM.
Transcription de la présentation:

www.objis.com - Formation Web Services 1 1

A propos d’Objis… Centre de formation Java/J2ee depuis 2005 Paris – Lyon - Dakar 70% de pratique Tutoriaux en libre accès sur www.objis.com 1000 visiteurs quotidiens venus de 100 pays Cursus développeur / Architecte / Chef de projet Nouveauté 2011 : sécurité & performance www.objis.com - Formation Web Services www.objis.com - Formation SPRING 2

8 fondamentaux et 7 bonnes pratiques WS Fondamentaux : SOA, WS, standards et interropérabilité Fondamentaux : web services SOAP avec Java 6 Fondamentaux : valeur ajoutée specs WS-* Fondamentaux : méthodologies Développement WS Fondamentaux : différence WS SOAP 'Rpc' et 'Document' Fondamentaux : architecture & approche REST Fondamentaux : critère choix WS 'lourd'/soap ou 'léger'/rest Fondamentaux : stratégies sécurité WS Bonne pratique : validation conformité de votre web 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 top-down Bonne pratique : implément. specs WS-* via frameworks www.objis.com - Formation Web Services www.objis.com - Formation SPRING 3

Objectifs de la formation WS Objis 1) Comprendre bénéfices, challenges, standards WS 2) Comprendre la relation entre WS et archi. SOA 3) Comprendre dev web services avec Java / Jee 4) Identifier fondamentaux & bonnes pratiques WS www.objis.com - Formation Web Services www.objis.com - Formation SPRING 4

Sommaire Partie 1 : introduction Web Services / SOA (p. 6) Partie 2 : lecture WSDL (p. 39) Partie 3 : développement WS 'lourd' SOAP (p. 54) Partie 4 : développement WS 'léger' REST (p. 79) Partie 5 : comparaison WS SOAP / REST (p. 86) Partie 6 : Sécurité WS (p. 89) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 5

Partie 1 : Introduction Web Services Historique et positionnement Web services / SOA Architecture SOA : les 5 caractéristiques clés Architecture Web services Web service et Java : Java 6 et le monde JAX-WS Interropérabilité : les spécifications WS-* Conformité WS-I : choix de frameworks dev Java WS Conformité WS-I : outils 'Monitor' et 'Analyzer' www.objis.com - Formation Web Services www.objis.com - Formation SPRING 6

Relation Web Services / SOA Jusqu'où la DSI met en oeuvre SOA ? Voir Formation SOA 2) Transactions 3) Qualité service 1) Sécurité Rôle archi. WS Rôle dev. www.objis.com - Formation Web Services www.objis.com - Formation SPRING 7

Environnement SOA ESB www.objis.com - Formation Web Services Services de présentation ESB Processus métiers orchestrée Adaptateurs Service Service Service Services composites R o u t a g e T r a n s f o m t i M e s s a g e s Services bas niveau Systèmes métiers ERP CRM SCM Portail www.objis.com - Formation Web Services www.objis.com - Formation SPRING 8

SOA : 5 caractéristiques clés Contrat de service Transparence du service Granularité du service Composition du service Annuaire de service www.objis.com - Formation Web Services www.objis.com - Formation SPRING 9

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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 10

interface / contrat de service Caractéristique SOA : interface / contrat de service Service(s) XSD 1 Opération XSD Message In/Out XSD 2 Opération XSD Message In/Out www.objis.com - Formation Web Services www.objis.com - Formation SPRING 11

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' www.objis.com - Formation Web Services www.objis.com - Formation SPRING 12

Caractéristique SOA N° 2: Transparence ? www.objis.com - Formation Web Services www.objis.com - Formation SPRING 13

Caractéristique SOA N° 2: Transparence www.objis.com - Formation Web Services www.objis.com - Formation SPRING 14

Caractéristique SOA N° 2: Transparence www.objis.com - Formation Web Services www.objis.com - Formation SPRING 15

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 ?) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 16

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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 17

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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 18

Les technologies d'une plate forme SOA Votre web services www.objis.com - Formation Web Services www.objis.com - Formation SPRING 19

Architecture SI et place Web services autour du bus ESB www.objis.com - Formation Web Services www.objis.com - Formation SPRING 20

Rôles projet SOA www.objis.com - Formation Web Services www.objis.com - Formation SPRING 21

Orchestration avec BPEL www.objis.com - Formation Web Services www.objis.com - Formation SPRING 22

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 ! www.objis.com - Formation Web Services www.objis.com - Formation SPRING 23

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 2003+ : nouveaux standards ouverts XML / Web Services WSDL / SOAP / UDDI JAX-RPC / JAX-WS www.objis.com - Formation Web Services www.objis.com - Formation SPRING 24

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. www.objis.com - Formation Web Services www.objis.com - Formation SPRING 25

Architecture Web Services Application cliente Requête EndPoint Réponse Web Method Web Method Récupère métadonnées WSDL EndPoint Recherche WSDLs défini Web Method Localise Web Method UDDI www.objis.com - Formation Web Services www.objis.com - Formation SPRING 26

Standards Web services : Le monde de JAX-WS Java SE 6 JAXB utilise Transformation JAVA / XML inclus JAX-WS SOAP XML Fournit API haut niveau pour Représenté par basé sur définit WSDL manipule JAX-P SCHEMA SAAJ Annuaire pour MTOM UDDI JAX-R Fournit clients pour accéder Fournit API bas niveau pour www.objis.com - Formation Web Services www.objis.com - Formation SPRING 27

Standards Web services JSR 224 : JAX-WS (API haut niveau pour WS) http://jcp.org/en/jsr/detail?id=224 JSR 181 : métadonnées (annotations) http://jcp.org/en/jsr/detail?id=181 JSR 109 : Modèle prog. Web Services JEE http://jcp.org/en/jsr/detail?id=109 JSR 67 : SAAJ (API bas niveau créer/manipuler WS) http://jcp.org/en/jsr/detail?id=67 www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Standards Web services et API Java 6 javax.jws javax.jws.soap Métadonnées (annotations facilitant dév. WS) → @WebService, @WebMethod, @HandlerChain, @HandlerChain, @OneWay, @SOAPBinding... javax.xml.soap SAAJ (API bas niveau créer/manipuler Message : En-tête, corps, Attachements...) → SOAPHeader, SOAPBody, SOAPFault... 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 JAX-WS (API haut niveau pour WS) → EndPoint, Service, Holder, @Action, @WebServiceref, @WebServiceClient www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Standards Web services : Le monde WS-* http://www.soaspecs.com/ws.php www.objis.com - Formation Web Services www.objis.com - Formation SPRING 30

Frameworks Web services : Implémentation specs WS-* Source : http://www.predic8.com/axis2-cxf-jax-ws-comparison.htm www.objis.com - Formation Web Services www.objis.com - Formation SPRING 31

Choix framework Apache CXF Apache CXF est le fruit de la fusion entre Apache Celtix et Apache XFire , d’où le nom CXF. Celtix était un Bus de service (ESB) Java sponsorisé par IONA et développé par le consortioum ObjectWeb. XFire était un framework de développement de services web basé sur SOAP. Les points communs étaient nombreux et les développeurs des 2 communautés ont décidé de travailler ensemble pour offir le meilleur des deux mondes. www.objis.com - Formation Web Services www.objis.com - Formation SPRING 32

Choix framework Apache CXF Choix naturel pour développeurs Spring Support des standards WS-* : WS-Basic Profile, WS- Addressing, WS-Policy, WS-ReliableMessaging, WS-Security. Support de JAX-WS (inclus JAXB et SAAJ) Support de SOAP, WSDL, MTOM Support Style REST (Spec JAX-RS) Facilité d’utilisation : développement basé sur POJO annotés Nombreux outils voir ci-dessous répertoire bin Nombreux formats transport : Http(s), JMS, CXF Format données : XML, JSON Plusieurs stratégies binding XML : JAXB, Aegis Plusieurs stratégies de binding non-xml : json, corba, jbi, sca Déploiement flexible : serveurs J2ee , intégration sca (Tuscany) et jbi (service engine pour ServiceMix, OpenESB, Petals) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 33

Choix Métro Implémentation de référence des specs JAX-WS Support des standards WS-* : WS-Basic Profile, WS- Addressing, WS-Policy, WS-ReliableMessaging, WS-Security. Support de JAX-WS (inclus JAXB et SAAJ) Support de SOAP, WSDL, MTOM Facilité d’utilisation : développement basé sur POJO annotés - n'a pas autant d'outils RAD que CXF Nombreux formats transport : Http(s), JMS Ne gère pas REST + A privilégier pour interropérabilité avec WS .NET 3.5 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 34

Interropérabilité Web Services Consortium WS-I (www.ws-i.org) : promouvoir l'interropérabilité des services web à travers les plattes formes,OS, langages de programmation 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 www.objis.com - 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) www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Interropérabilité Web Services : Exemple résultat outil 'Monitor' www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Interropérabilité Web Services : Exemple résultat outil 'Analyzer' www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Partie 2 : lecture WSDL Les 5 sections clés Section 'types' Section 'message' Section 'portType' Section 'bindings' Section 'services' www.objis.com - Formation Web Services www.objis.com - Formation SPRING 39

Anatomie WSDL : 5 sections clés 1 : types 2 : message 3 : porType 4 : binding 5 : service www.objis.com - Formation Web Services www.objis.com - Formation SPRING 40

Anatomie WSDL : 5 sections clés www.objis.com - Formation Web Services www.objis.com - Formation SPRING 41

Bonne pratique lecture sections WSDL Commencer par lire section 'du milieu' : portType pour identifier rapidement le savoir-faire (opérations) du WS Au dessus de la section 'portType' : infos abstraites Section 'types' : typage paramètres entrées/sorties Section 'messages' : messages SOAP Aller / Retour En dessous de 'portType' : infos 'concrètes' Section 'bindings : différents canaux de transport (http,ftp,...) Section 'service'' : lieu physique ou le service est accessible www.objis.com - Formation Web Services www.objis.com - 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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Section clé WSDL N°1 : 'types' Exemple 1 (WS Document types simple) www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Section clé WSDL N°1 : 'types' Exemple 2 (WS Doc. types complexes) www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Section clé WSDL N°1 : 'types' Exemple 2 (WS Doc. types complexes) 4 3 www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Impact style 'Rpc' ou 'Document' du WS sur section <types> Style 'Rpc' : historiquement le plus utilisé (int/string) Style 'Document' : permet de décrire la structure du message via fichier xsd externe. Plus souple ! Info : Style 'Document' par défaut www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Section clé WSDL N°2 : 'message' Messages SOAP utilisés par le WS Construits à partir des types données section 'types' Remarque : ordre messages indique pattern service www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Section clé WSDL N°3 : 'porType' Décrit les opérations , le 'savoir-faire' du WS Equivalent strict de l'interface Java du service Opérations identifiées par @WebMethod code WS www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Section clé WSDL N°3 : 'portType' Pattern de service www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Section clé WSDL N°4 : 'bindings' 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 ! www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Section clé WSDL N°4 : 'bindings' 1 2 3 www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Section clé WSDL N°5 : 'service' 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 192.168.02:8888 1 implémentation 1 interface www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Partie 3 : méthodes développement WS Approche 'bottom-up' et 'top-down' Avantages et inconvénients dev WS avec Java6 Valeur ajoutée serveurs, IDE, frameworks Méthode développementr WS SOAP 'Document' Création d'intercepteurs (Handlers) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 54

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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Inconvénients Approche bottom-Up Ne respecte pas la 'neutralité du langage' Orienté 'programmeur' et pas 'utilisateur' www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Dev. Web services avec Java 6 JAX-WS inclus dans Java6 Création WS avec Pojo annoté (Métadonnées) Publication avec Endpoint.plublish() Mini serveur web intégré Inconvénient : monothread www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Dev. Web services avec JEE JAX-WS implémenté par serveur JEE Packaging WS sous forme de WAR ou EJB jar Génération automatique du WSDL Filtre disponible (via framework) Possibilité de sécuriser l'accès WS avec JAAS Multithread Intégration services Jee comme JMS, JCA, ... www.objis.com - Formation Web Services www.objis.com - Formation SPRING

WS avec types complexes www.objis.com - Formation Web Services www.objis.com - Formation SPRING

WS avec types complexes Exemple classe accès données www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Bonnes pratiques WS types complexes : Outils wsgen et ws import 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 http://localhost:8889/teams?wsdl 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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING

WS avec types complexes 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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING

WS avec types complexes 3)Publication du WS 4) Génération classes utilitaires pour le client (dans répertoire teamC): wsimport -p teamC -keep http://localhost:8889/teams?wsdl → Utiliser le codede la classe TeamsService.java généré du service pour coder votre client → repérer méthodes xxxxPort www.objis.com - Formation Web Services www.objis.com - Formation SPRING

WS avec types complexes www.objis.com - Formation Web Services www.objis.com - Formation SPRING

WS avec types complexes 5) Codage & compilation client TeamsClient (à partir du code source de teamC.TeamsService) Extrait code TeamsService généré coté client client www.objis.com - Formation Web Services www.objis.com - Formation SPRING

WS avec types complexes 6) Lancement du client : java -cp . TeamsClient www.objis.com - 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 http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/index.html www.objis.com - Formation Web Services www.objis.com - Formation SPRING

JAXB : de JAVA à XML www.objis.com - Formation Web Services http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/index.html www.objis.com - Formation Web Services www.objis.com - 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 www.objis.com - Formation Web Services www.objis.com - 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 type JAVA Point commun entre plusieurs langages Ex : langage C connait 1 et 0 mais pas 'boolean' Type xsd 'en commun' : xsd:boolean http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/index.html www.objis.com - Formation Web Services www.objis.com - 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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Traitement à la volée de messages : exemple sécurité www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Etape 1 : créer Handler (1/2) www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Etape 1 : créer le Handler (2/2) www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Etape 2 : Configurer le handler dans un fichier XML www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Etape 3 : Associer le Handler au service avec @Handlers www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Etape 4 : Lancer le client www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Handler coté client : 2 méthodes (déclarative et programmative) 1) ajout @HandlerChain dans classe Service générée 2) ajout code dans classe client www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Web Services 'léger' avec REST Exemples Requêtes/Réponses WS REST Architecture WS style REST 4 étapes traitement requête Contraintes REST API JAX-RS REST avec Apache CXF www.objis.com - Formation Web Services www.objis.com - Formation SPRING 79

Exemples URL REST http://localhost:9000/categoryservice/category/001 http://localhost:9000/categoryservice/category/001/books www.objis.com - Formation Web Services www.objis.com - Formation SPRING 80

(REpresentational State Transfert) Architecture REST (REpresentational State Transfert) 1) centré POJO 2) centré HTTP 3) indépendence format (XML/JSON) 4) indépendance conteneur 5) ok avec conteneur JEE www.objis.com - Formation Web Services www.objis.com - Formation SPRING 81

Bonne pratique traitement requête HTTP façon 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) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 82

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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 83

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-* www.objis.com - Formation Web Services www.objis.com - Formation SPRING 84

Méthode dev appli REST et CXF 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 : @XmlRootElement audessus nom classe + @XmlElement pour personnaliser namespace) 3) Créer classes d'implémentation (CategoryService) & les annoter avec annotations JAX-RS (@GET, @POST, ...@Path, @Consumes, @Produces, @PathParam) 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 ) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 85

Comparaisons Web Services 'lourd' SOAP vs 'léger' REST Avantages et inconvénient WS 'lourd' SOAP Avantages et inconvénient WS 'léger' REST www.objis.com - Formation Web Services www.objis.com - 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) www.objis.com - Formation Web Services www.objis.com - 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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING

Sécurité Web Services Les risques du couplage faible Stratégies de sécurité www.objis.com - Formation Web Services www.objis.com - 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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 90

Exemple B2B AVANT SOA : Communication par VPN www.objis.com - Formation Web Services www.objis.com - Formation SPRING 91

Communication par Web Services Exemple B2B AVEC SOA : Communication par Web Services www.objis.com - Formation Web Services www.objis.com - Formation SPRING 92

Bonnes pratiques : solutions Sécurité Web Services 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 : http://cxf.apache.org/docs/ws-security.html www.objis.com - Formation Web Services www.objis.com - Formation SPRING 93

WS-Security : jetons de sécurité (Security Token) 1 2 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 94

Signature de message (début) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 95

Signature de message (fin) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 96

Service de jeton sécurisés www.objis.com - Formation Web Services www.objis.com - Formation SPRING 97

Requete jeton sécurisés www.objis.com - Formation Web Services www.objis.com - Formation SPRING 98

Réponse jeton sécurisés www.objis.com - Formation Web Services www.objis.com - Formation SPRING 99

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 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 100

Fédération d'identités Situation1 (e-commerce) : besoin communication sécurisée entre : Acteur 1 : Site e-commerce Acteur 2 : Usine Acteur 3 : Banque Acteur 4 : Assurance Acteur 5 : Logistique Spécifications Web Service de sécurité indépendante du protocole sous-jacent WS-Security WS-Federation SAML www.objis.com - Formation Web Services www.objis.com - Formation SPRING 101

Notion clé : SSO SSO (Single Sign On) : fournir mécanisme necessaire pour permettre à un utilisateur d'utiliser plusieurs applicatiosn différentes en s'authentifiant une seule fois. www.objis.com - Formation Web Services www.objis.com - Formation SPRING 102

ANNEXE : Approche code first avec CXF (WSDL → Code) 1 : Générer les classes du service à partir WSDL 2 : Implémenter les méthodes du service 3 : Publier le service 4 : Développer un client pour le service www.objis.com - Formation Web Services www.objis.com - Formation SPRING 103

ANNEXE : Approche code first avec CXF (WSDL → Code) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 104

Code first avec CXF : étape 1 (génération code service) wsdl2java -ant -impl -server -d <Sortie> mon.wsdl Détail des arguments : -ant : crée un script ant pour génération code -impl : génère une classe d'implémentation -server : gènère un composant pour publier -d : répertoire de dépot code généré www.objis.com - Formation Web Services www.objis.com - Formation SPRING 105

Code first avec CXF : étape 1 (code généré par wsdl2java) Classes de messages Entrée/Sortie JAXB Dans package 'inversé' du targetNameSpace Ex : ValidationCRI, ValidationCRIResponse Interface du service Classe d'implémentation du service Classe serveur standalone (publication & test WS) Fichier build.xml (générer source & publier) 1 2 3 4 5 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 106

Code first avec CXF : étape 1 (génération code service) 2 4 3 1 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 107

Code first avec CXF : étape 1 (génération code Interface service) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 108

Code first avec CXF : étape 2 (squelette Implémentation service) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 109

Code first avec CXF : étape 3 (publication service) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 110

Code first avec CXF : étape 1 (génération build.xml ) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 111

Code first avec CXF : étape 3 (Lancement serveur ) www.objis.com - Formation Web Services www.objis.com - Formation SPRING 112

Code first avec CXF : étape 4 (Codage client ) Wsdl2java -impl -client -d <sortie> mon.wsdl 1 2 3 www.objis.com - Formation Web Services www.objis.com - Formation SPRING 113

Transport sécurisé HTTPS 1 : développer Interface & Impl du service 2 : générer clé cryto 3 : créer configuration client et serveur (xml cxf) jaxws:endpoint (cxl-servlet.xml) jaxws:client (client-bean.xml) 4 : créer un composant client qui utilise le service 5 : configurer le serveur pour support SSL 6 : Développer un client 7 : build & deploiement www.objis.com - Formation SPRING

www.objis.com - Formation SPRING Génération clé Créer une paire de clés dans un store keytool -genkey -alias objiscert -keyalg RSA -keysize 2048 -dname "CN=objis.com,OU=Formation,O=intra,L=Paris,S=Paris,C= FR" -keypass changeit -keystore objisKS.jks -storepass changeit (option) Analyser le contenu cacerts (/lib/security/cacerts) keytool -list -keystore cacerts -storepass changeit (option) Faire demande de certificat à autorité VeriSign keytool -certreq -v -alias objiscert -file objiscert-csr.pem - keypass changeit -storepass changeit -keystore objisKS.jks www.objis.com - Formation SPRING

Configuration client CXF 1 1 2 3 Lien utile : http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html www.objis.com - Formation SPRING

Configuration (Spring) client <http-conduit> permet de mettre en oeuvre propriétés SSL. www.objis.com - Formation SPRING

Codage (Spring) client www.objis.com - Formation SPRING