Java EE 6 et GlassFish 3 Antonio Goncalves Traduit par Éric Jacoboni, avec la contribution technique de Éric Hébert © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et fiable. Cependant, Pearson Education France n’assume de responsabilités, ni pour son utilisation, ni pour les contrefaçons de brevets ou atteintes aux droits de tierces personnes qui pourraient résulter de cette utilisation. Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques. Ils ne sont en aucun cas destinés à une utilisation commerciale ou professionnelle. Pearson Education France ne pourra en aucun cas être tenu pour responsable des préjudices ou dommages de quelque nature que ce soit pouvant résulter de l’utilisation de ces exemples ou programmes. Tous les noms de produits ou marques cités dans ce livre sont des marques déposées par leurs ­propriétaires respectifs. Publié par Pearson Education France 47 bis, rue des Vinaigriers 75010 PARIS Tél. : 01 72 74 90 00 www.pearson.fr Titre original : Beginning Java™ EE6 Platform with GlassFish™ 3 Traduction : Éric Jacoboni, avec la contribution de Éric Hébert Mise en pages : TyPAO ISBN : 978-2-7440-2423-8 Copyright © 2010 Pearson Education France Tous droits réservés ISBN original : 978-1-4302-1954-5 Copyright © 2009 by Antonio Goncalves Tous droits réservés Édition originale publiée par Apress 2855 Telegraph Avenue Berkeley, CA 94705 www.apress.com Aucune représentation ou reproduction, même partielle, autre que celles prévues à l’article L. 122-5 2˚ et 3˚ a) du code de la propriété intellectuelle ne peut être faite sans l’autorisation expresse de Pearson Education France ou, le cas échéant, sans le respect des modalités prévues à l’article L. 122-10 dudit code. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves Table des matières Avant-propos....................................................................................................................... XIII À propos de l’auteur .......................................................................................................... XIV Remerciements.................................................................................................................... XV Introduction......................................................................................................................... 1 1 Tour d’horizon de Java EE 6 ............................................................................................ 5 Présentation de Java EE. ....................................................................................................... Un peu d’histoire............................................................................................................ Standards. ......................................................................................................................... Architecture. .................................................................................................................... Composants...................................................................................................................... Conteneurs. ...................................................................................................................... Services............................................................................................................................. Protocoles réseau............................................................................................................ Paquetages........................................................................................................................ Java Standard Edition.................................................................................................... 6 6 9 9 10 11 12 14 15 16 Spécifications de Java EE 6 ................................................................................................. 16 Nouveautés de Java EE 6...................................................................................................... Plus léger. ......................................................................................................................... Élagage.............................................................................................................................. Profils................................................................................................................................. Plus simple d’utilisation .............................................................................................. Plus riche.......................................................................................................................... Plus portable.................................................................................................................... 18 19 19 20 21 22 24 L’application CD-Bookstore . .............................................................................................. 24 Configuration de l’environnement de travail .................................................................... 26 26 27 34 JDK 1.6............................................................................................................................. Maven 2. ........................................................................................................................... JUnit 4............................................................................................................................... © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves IV 2 Java EE 6 et GlassFish 3 Derby 10.5........................................................................................................................ GlassFish v3. ................................................................................................................... Installation de GlassFish............................................................................................... 39 42 48 Résumé..................................................................................................................................... 50 Persistance en Java .............................................................................................................. 51 Résumé de la spécification JPA. .......................................................................................... 52 53 54 54 Historique de la spécification...................................................................................... Nouveautés de JPA 2.0.................................................................................................. Implémentation de référence ...................................................................................... Comprendre les entités.......................................................................................................... ORM = Object-Relational Mapping.......................................................................... Interrogation des entités................................................................................................ Méthodes de rappel et écouteurs ............................................................................... Récapitulatif............................................................................................................................ 3 55 55 57 59 Écriture de l’entité Book............................................................................................... Écriture de la classe Main. ........................................................................................... Unité de persistance pour la classe Main. ................................................................ Compilation avec Maven.............................................................................................. Exécution de la classe Main avec Derby.................................................................. Écriture de la classe BookTest..................................................................................... Unité de persistance pour la classe BookTest ......................................................... Exécution de la classe BookTest avec Derby intégré ............................................ 60 61 62 63 64 66 67 69 70 Résumé..................................................................................................................................... 71 ORM : Object-Relational Mapping. ................................................................................ 73 Association d’une entité........................................................................................................ 73 76 Configuration par exception. ....................................................................................... Associations élémentaires..................................................................................................... Tables................................................................................................................................. Clés primaires.................................................................................................................. Attributs............................................................................................................................ Types d’accès................................................................................................................... Collections de types de base........................................................................................ Association des types de base. .................................................................................... 77 78 80 85 92 95 97 Associations avec XML........................................................................................................ 99 © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves Table des matières Objets intégrables................................................................................................................... Types d’accès d’une classe intégrable....................................................................... Correspondance des relations............................................................................................... Relations dans les bases de données relationnelles. .............................................. Relations entre entités .................................................................................................. Chargement des relations. ............................................................................................ Tri des relations............................................................................................................... Traduction de l’héritage........................................................................................................ 4 V 102 104 106 107 109 121 122 Stratégies d’héritage. ..................................................................................................... Type de classes dans une hiérarchie d’héritage. ..................................................... 126 127 135 Résumé..................................................................................................................................... 139 Gestion des objets persistants............................................................................................ 141 Interrogation d’une entité...................................................................................................... 142 Le gestionnaire d’entités....................................................................................................... 145 147 149 150 162 Obtenir un gestionnaire d’entités. .............................................................................. Contexte de persistance. ............................................................................................... Manipulation des entités............................................................................................... L’API de cache................................................................................................................ JPQL......................................................................................................................................... Select.................................................................................................................................. From................................................................................................................................... Where................................................................................................................................. Order By. .......................................................................................................................... Group By et Having....................................................................................................... Suppressions multiples . ............................................................................................... Mises à jour multiples................................................................................................... Requêtes................................................................................................................................... Requêtes dynamiques.................................................................................................... Requêtes nommées......................................................................................................... Requêtes natives. ............................................................................................................ Concurrence. ........................................................................................................................... 163 165 167 167 169 169 170 171 171 174 175 178 Gestion de version.......................................................................................................... Verrouillage optimiste................................................................................................... Verrouillage pessimiste................................................................................................. 179 182 183 185 Résumé..................................................................................................................................... 186 © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves VI 5 6 Java EE 6 et GlassFish 3 Méthodes de rappel et écouteurs....................................................................................... 187 Cycle de vie d’une entité....................................................................................................... 187 Méthodes de rappel................................................................................................................ 189 Écouteurs (listeners). ............................................................................................................. 192 Résumé..................................................................................................................................... 198 Enterprise Java Beans. ........................................................................................................ 199 Introduction aux EJB............................................................................................................. 200 201 202 204 205 206 207 Types d’EJB..................................................................................................................... Anatomie d’un EJB . ..................................................................................................... Conteneur d’EJB. ........................................................................................................... Conteneur intégré........................................................................................................... Injection de dépendances et JNDI.............................................................................. Méthodes de rappel et intercepteurs.......................................................................... Tour d’horizon de la spécification EJB............................................................................... Historique......................................................................................................................... Nouveautés d’EJB 3.1................................................................................................... EJB Lite. ........................................................................................................................... Récapitulatif............................................................................................................................ 7 209 209 210 211 L’entité Book.................................................................................................................... Le bean de session sans état BookEJB...................................................................... Unité de persistance pour le BookEJB...................................................................... La classe Main. ............................................................................................................... Compilation et assemblage avec Maven................................................................... Déploiement sur GlassFish.......................................................................................... Exécution de la classe Main avec Derby.................................................................. La classe BookEJBTest.................................................................................................. 213 214 215 216 217 218 220 221 221 Résumé..................................................................................................................................... 223 Beans de session et service timer....................................................................................... 225 Beans de session..................................................................................................................... 226 226 229 232 239 252 Beans sans état................................................................................................................ Beans avec état................................................................................................................ Singletons......................................................................................................................... Modèle des beans de session....................................................................................... Appels asynchrones. ...................................................................................................... © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves 8 Table des matières VII Conteneurs intégrés . ..................................................................................................... 254 Le service timer...................................................................................................................... Expressions calendaires................................................................................................ Création automatique d’un timer................................................................................ Création d’un timer par programme ......................................................................... 256 257 260 261 Résumé..................................................................................................................................... 263 Méthodes de rappel et ­intercepteurs................................................................................ 265 Cycles de vie des beans de session...................................................................................... 266 266 267 269 Beans sans état et singletons........................................................................................ Beans avec état................................................................................................................ Méthodes de rappel........................................................................................................ Intercepteurs............................................................................................................................ 9 Intercepteurs autour des appels................................................................................... Intercepteurs de méthode.............................................................................................. Intercepteur du cycle de vie......................................................................................... Chaînage et exclusion d’intercepteurs . .................................................................... 272 274 277 278 280 Résumé..................................................................................................................................... 282 Transactions et sécurité....................................................................................................... 283 Transactions. ........................................................................................................................... 283 284 285 286 ACID.................................................................................................................................. Transactions locales....................................................................................................... XA et transactions distribuées..................................................................................... Support des transactions avec les EJB................................................................................ Transactions gérées par le conteneur ........................................................................ Transactions gérées par le bean. ................................................................................. Sécurité. ................................................................................................................................... Principal et rôle............................................................................................................... Authentification et habilitation. .................................................................................. Gestion de la sécurité dans EJB........................................................................................... 10 288 289 296 298 299 300 Sécurité déclarative........................................................................................................ Sécurité par programmation. ....................................................................................... 301 301 305 Résumé..................................................................................................................................... 307 JavaServer Faces................................................................................................................... 309 Introduction à JSF.................................................................................................................. 310 © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves VIII Java EE 6 et GlassFish 3 FacesServlet et faces-config.xml................................................................................. Pages et composants...................................................................................................... Moteurs de rendu............................................................................................................ Convertisseurs et validateurs....................................................................................... Beans gérés et navigation............................................................................................. Support d’Ajax................................................................................................................ 311 311 313 313 314 315 Résumé des spécifications de l’interface web .................................................................. 316 316 317 317 318 318 Bref historique des interfaces web............................................................................. JSP 2.2, EL 2.2 et JSTL 1.2......................................................................................... JSF 2.0............................................................................................................................... Nouveautés de JSF 2.0.................................................................................................. Implémentation de référence....................................................................................... Récapitulatif............................................................................................................................ 11 L’entité Book.................................................................................................................... L’EJB BookEJB. ............................................................................................................. Le bean géré BookController. ..................................................................................... La page newBook.xhtml................................................................................................ La page listBooks.xhtml................................................................................................ Configuration avec web.xml......................................................................................... Compilation et assemblage avec Maven................................................................... Déploiement dans GlassFish. ...................................................................................... Exécution de l’application............................................................................................ 318 320 320 321 322 325 327 328 329 329 Résumé..................................................................................................................................... 330 Pages et composants. ............................................................................................................ 331 Pages web................................................................................................................................ 332 332 334 335 338 338 HTML................................................................................................................................ XHTML............................................................................................................................ CSS. ................................................................................................................................... DOM.................................................................................................................................. JavaScript. ........................................................................................................................ Java Server Pages. .................................................................................................................. Directives.......................................................................................................................... Scripts................................................................................................................................ Actions.............................................................................................................................. Récapitulatif..................................................................................................................... © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves 341 342 343 344 345 12 Table des matières IX Langage d’expressions (EL)................................................................................................. 347 La bibliothèque de marqueurs standard de JSP (JSTL)................................................... Actions fondamentales.................................................................................................. Actions de formatage..................................................................................................... Actions SQL.................................................................................................................... Actions XML................................................................................................................... Fonctions. ......................................................................................................................... 349 350 351 353 355 357 Facelets..................................................................................................................................... 358 JavaServer Faces..................................................................................................................... Cycle de vie. .................................................................................................................... Composants HTML standard. ..................................................................................... Gestion des ressources.................................................................................................. Composants composites. .............................................................................................. Objets implicites............................................................................................................. 360 361 363 374 375 381 Résumé..................................................................................................................................... 383 Traitement et navigation..................................................................................................... 385 Le modèle MVC..................................................................................................................... 385 387 389 390 FacesServlet..................................................................................................................... FacesContext.................................................................................................................... Configuration de Faces. ................................................................................................ Beans gérés.............................................................................................................................. Écriture d’un bean géré................................................................................................. Modèle d’un bean géré.................................................................................................. Navigation........................................................................................................................ Gestion des messages.................................................................................................... Conversion et validation........................................................................................................ Convertisseurs................................................................................................................. Convertisseurs personnalisés....................................................................................... Validateurs........................................................................................................................ Validateurs personnalisés. ............................................................................................ Ajax. ......................................................................................................................................... 390 391 391 396 400 402 404 406 407 408 Concepts généraux......................................................................................................... Ajax et JSF....................................................................................................................... Récapitulatif..................................................................................................................... 410 410 412 413 Résumé..................................................................................................................................... 418 © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves X 13 Java EE 6 et GlassFish 3 Envoi de messages................................................................................................................. 419 Présentation des messages.................................................................................................... 420 420 421 JMS.................................................................................................................................... MDB.................................................................................................................................. Résumé de la spécification des messages . ........................................................................ Bref historique des messages. ..................................................................................... JMS 1.1............................................................................................................................. EJB 3.1.............................................................................................................................. Implémentation de référence....................................................................................... 421 422 422 422 423 Envoi et réception d’un message. ........................................................................................ 423 Java Messaging Service......................................................................................................... 425 427 428 429 442 443 Point à point..................................................................................................................... Publication-abonnement............................................................................................... API JMS. .......................................................................................................................... Sélecteurs.......................................................................................................................... Mécanismes de fiabilité ............................................................................................... MDB : Message-Driven Beans. ........................................................................................... Création d’un MDB....................................................................................................... Le modèle des MDB...................................................................................................... MDB comme consommateur....................................................................................... MDB comme producteur.............................................................................................. Transactions..................................................................................................................... Gestion des exceptions.................................................................................................. Récapitulatif............................................................................................................................ 14 446 447 447 452 453 455 456 OrderDTO. ....................................................................................................................... OrderSender..................................................................................................................... OrderMDB. ...................................................................................................................... Compilation et assemblage avec Maven................................................................... Création des objets administrés. ................................................................................. Déploiement du MDB dans GlassFish...................................................................... Exécution de l’exemple................................................................................................. 457 457 458 459 459 461 461 462 Résumé..................................................................................................................................... 462 Services web SOAP............................................................................................................... 465 Présentation des services web.............................................................................................. 466 467 UDDI................................................................................................................................. © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves Table des matières XI WSDL................................................................................................................................ SOAP................................................................................................................................. Protocole de transport.................................................................................................... XML. ................................................................................................................................. 467 468 468 468 Résumé de la spécification des services web . .................................................................. Bref historique des services web................................................................................ Spécifications Java EE. ................................................................................................. Implémentation de référence....................................................................................... 468 469 469 471 Appel d’un service web ........................................................................................................ 471 JAXB : Java Architecture for XML Binding..................................................................... 473 476 478 Liaison............................................................................................................................... Annotations...................................................................................................................... La partie immergée de l’iceberg.......................................................................................... WSDL................................................................................................................................ SOAP................................................................................................................................. JAX-WS : Java API for XML-Based Web Services......................................................... Le modèle JAX-WS....................................................................................................... Appel d’un service web ............................................................................................... Récapitulatif............................................................................................................................ 481 481 484 485 486 494 La classe CreditCard..................................................................................................... Le service web CardValidator..................................................................................... Compilation et assemblage avec Maven................................................................... Déploiement dans GlassFish. ...................................................................................... Le consommateur du service web ............................................................................. Création des artefacts du consommateur et assemblage avec Maven............... Exécution de la classe Main. ....................................................................................... 496 497 497 498 499 501 502 505 Résumé..................................................................................................................................... 505 15 Services web REST............................................................................................................... 507 Présentation des services web REST.................................................................................. Ressources........................................................................................................................ URI..................................................................................................................................... Représentations............................................................................................................... WADL. .............................................................................................................................. HTTP................................................................................................................................. 507 508 508 509 510 510 Spécification des services web REST................................................................................. 516 © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves XII Java EE 6 et GlassFish 3 Historique rapide de REST.......................................................................................... JAX-RS 1.1...................................................................................................................... Nouveautés de JAX-RS 1.1. ........................................................................................ Implémentation de référence....................................................................................... 516 517 517 517 L’approche REST................................................................................................................... 518 518 519 519 520 521 522 Du Web aux services web . .......................................................................................... Pratique de la navigation sur le Web. ........................................................................ Interface uniforme.......................................................................................................... Accessibilité..................................................................................................................... Connectivité..................................................................................................................... Sans état............................................................................................................................ JAX-RS : Java API for RESTful Web Services................................................................. Le modèle JAX-RS........................................................................................................ Écriture d’un service REST......................................................................................... Définition des URI......................................................................................................... Extraction des paramètres. ........................................................................................... Consommation et production des types de contenus . .......................................... Fournisseurs d’entités.................................................................................................... Méthodes ou interface uniforme................................................................................. Informations contextuelles........................................................................................... Gestion des exceptions.................................................................................................. Cycle de vie. .................................................................................................................... Récapitulatif............................................................................................................................ 523 523 524 525 526 528 530 532 534 536 537 L’entité Book.................................................................................................................... Le service REST BookResource................................................................................. Configuration avec web.xml......................................................................................... Compilation et assemblage avec Maven................................................................... Déploiement dans GlassFish. ...................................................................................... Exécution de l’exemple................................................................................................. 537 538 539 542 543 544 545 Résumé..................................................................................................................................... 546 Index................................................................................................................................................... 547 © 2010 Pearson Education France – Java EE 6 et GlassFish 3 – Antonio Goncalves