Développement web avec Java



Documents pareils
Compte Rendu d intégration d application

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

1. Installation d'un serveur d'application JBoss:

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Architecture applicative et Cartographie

Auto-évaluation Aperçu de l architecture Java EE

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Présentation du cours. Sécurité dans Java EE. Plan (1/2) Plan (2/2) Généralités sur la sécurité

Création d une application JEE

Refonte front-office / back-office - Architecture & Conception -

Web Tier : déploiement de servlets

Mise en œuvre des serveurs d application

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Module BD et sites WEB

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Première coupe : Introduction à la plateforme Java EE JAVA JAVA. Introduction à la plateforme Java EE. Introduction à la plateforme Java EE

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Cours en ligne Développement Java pour le web

EJB. Karim Bouzoubaa Issam Kabbaj

Introduction à la plateforme J2EE

La gestion de la persistance avec Hibernate. Hibernate et la gestion de persistance. La gestion de la persistance (1/2) Introduction

10. Base de données et Web. OlivierCuré

Java pour le Web. Cours Java - F. Michel

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

JOnAS 5. Serveur d application d

Les architectures 3-tiers Partie I : les applications WEB

Environnements de Développement

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

2 Chapitre 1 Introduction

Documentation CAS à destination des éditeurs

J2EE - Introduction. Développement web - Java. Plan du chapitre

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Aspects techniques : guide d interfaçage SSO

Java Naming and Directory Interface

Devenez un véritable développeur web en 3 mois!

Application web de gestion de comptes en banques

WebSSO, synchronisation et contrôle des accès via LDAP

CQP Développeur Nouvelles Technologies (DNT)

Développement d un réseau social modulaire

Formation : WEbMaster

4. SERVICES WEB REST 46

Introduction aux «Services Web»

OpenPaaS Le réseau social d'entreprise

Application Web et J2EE

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Hébergement de sites Web

Architecture Orientée Service, JSON et API REST

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Alfstore workflow framework Spécification technique

JavaServer Pages (JSP)

Attaques applicatives

Vulgarisation Java EE Java EE, c est quoi?

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Cedric Dumoulin (C) The Java EE 7 Tutorial

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Formation en Logiciels Libres. Fiche d inscription

Les processus métiers : concepts, modèles et systèmes

Java et les annotations

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Programmation Internet Cours 4

MEMOIRE DE STAGE DE FIN D ETUDE

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

PROSOP : un système de gestion de bases de données prosopographiques

Nouvelles Plateformes Technologiques

Programmation par composants (1/3) Programmation par composants (2/3)

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Petite définition : Présentation :

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

EXA1415 : Annotations

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

STID 2ème année : TP Web/PHP

Sécurité des applications web. Daniel Boteanu

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Une introduction à la technologie EJB (2/3)

IBM DB2 Alphablox. d administration GC

Plan. Department of Informatics

Programme ASI Développeur

Programmation Web. Madalina Croitoru IUT Montpellier

Applications des patrons de conception

Catalogue des Formations Techniques

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Applications et Services WEB: Architecture REST

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

HTML, CSS, JS et CGI. Elanore Elessar Dimar

BES WEBDEVELOPER ACTIVITÉ RÔLE

Messagerie asynchrone et Services Web

Les frameworks au coeur des applications web

SYSTÈMES D INFORMATIONS

Premiers Pas en Programmation Objet : les Classes et les Objets

Introduction aux concepts d ez Publish

OBJIS : 10 ans d'expérience en formation JAVA. Programme détaillé formation 'Développeur Java web Mobile' OBJIS Congo

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Transcription:

Cécile Hardebolle cecile.hardebolle@supelec.fr Développement web avec Java Tutoriel

Plan 1. Principes des applications web 2. Et Java dans tout ça? 3. Principaux composants Java EE pour le web 4. Persistance des données 5. Application Java EE 2

Principes des applications web 3

Principe des sites web Pages HTML statiques Obtention via le protocole HTTP (requête / réponse) Client Serveur web wwwdi.supelec.fr 1 Requête : http://wwwdi.supelec.fr/hardebolle/fichier. html C:\server\htdocs\hardebolle\ 3 Affichage : interprétation HTML HTML fichier. html 2 Réponse : fichier.html HTML fichier. html 4

HTML HTML = EXtensible HyperText Markup Language Un langage à base de «balises» XML avec une grammaire définie <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd"> html <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>le titre de la fenêtre</title> </head> <body> <p>voici ma première page</p> </body> </html> head title Le titre de la fenêtre body p Voici ma première page 5

Structuration de texte <body> <h1>gros titre</h1> <p>voici mon paragraphe</p> <h2>section</h2> <h3>sous-section</h3> <img src="help.png" alt="ampoule"/> <p>un nouveau paragraphe avec un <a href="http://www.supelec.fr">lien hypertexte</a>. </p> </body> 6

CSS (Cascading Style Sheets) HTML : apparence par défaut CSS : personnalisation de l apparence de HTML Attribut de définition de style <h1 style="color:purple;">gros titre</h1> Surcharge du style par défaut <h2>section</h2> h2 { text-decoration: underline; Identifiant <img id="ampoule" src="help.png" alt="ampoule"/> #ampoule { border: 3px dashed blue; Classe de style <p class="myp">voici mon paragraphe</p>.myp { font-style: italic; 7

Principe des applications web Génération dynamique du contenu HTML à partir d un langage de programmation Client Serveur web wwwdi.supelec.fr 1 Requête : http://wwwdi.supelec.fr/fichier. xyz 4 Affichage : interprétation HTML HTML fichier. xyz 3 Réponse : fichier.xyz (HTML) Script fichier. xyz 2 Exécution : Script HTML PHP, ASP, Perl, CGI 8

Formulaires Interaction avec l utilisateur Requête = envoi de données Réponse = résultat du traitement des données Client Serveur web wwwdi.supelec.fr HTML formulaire. xyz 1 Requête : http://wwwdi.supelec.fr/reponse.xyz + données 3 Réponse : reponse.xyz (HTML) Script 2 Exécution : Script HTML reponse. xyz & traitement des données 4 Affichage : interprétation HTML HTML reponse. xyz 9

Structure des formulaires <body> <h1>un formulaire</h1> <form action="reponse.xyz" method="post"> <label for="prenom">prénom :</label> <input type="text" id="prenom" name="prenom"/> <input type="submit" value="s'inscrire!"/> </form> </body> 10

Et Java dans tout ça? 11

Java : langage et plate-forme Java Platform Standard Edition (Java SE) = JVM (machine virtuelle) + APIs (bibliothèques) + Java 12 Source : Java SE 6 Documentation

Classe Java public class Person { private String name; private boolean deceased; public PersonBean(String n, boolean d) { this.name = n; this.deceased = d; public String getname() { return this.name; public void setname(string name) { this.name = name; public Integer dosomething(integer i) { return (i * i); public class AutreClasse { private Integer onenumber; public AutreClasse (Integer o) { this. onenumber = o; public Person createrobert(){ Person robert; robert = new Person("Robert, false); return robert; 13

Composants Composant = unité logique de traitement Objectif : modularité et réutilisation Propriétés : Identification : nom unique, référencé dans un annuaire Indépendance : utilisable tout seul Réutilisation : utilisable dans différents contextes Intégration : combinable avec d autres composants composant objety objetx Technologies d implémentation multiples Déploiement sur serveur 14

Composants et architectures N-tiers 3 niveaux types de responsabilités pour les composants Présentation Traitement Ressources Interaction avec l utilisateur Traitements métiers Gestion des ressources, des données N tiers sur lesquels sont distribuées les composants P P T R Client mobile Serveur web Serveur d applications Serveur de base de données 15 La phase de développement avec Java EE

Composants Java : JavaBeans Composant implémenté par une classe Java Classe Java mais conventions à respecter Sérialisation Constructeur par défaut Propriétés privées avec accesseurs (encapsulation et introspection) public <returntype> get<propertyname>() public void set<propertyname> (parameter) Méthodes d interception d événements Utilisation d écouteurs et génération d événements Ex : PropertyChangeListener 16

JavaBeans Exemple public class PersonBean implements Serializable { private String name; private boolean deceased; public PersonBean() { public String getname() { return this.name; public void setname(string name) { this.name = name; public boolean isdeceased() { return this.deceased; public void setdeceased(boolean deceased) { this.deceased = deceased; 17

Java Enterprise Edition Java EE Un ensemble de spécifications Proposées par la société Sun (Oracle) & portées par un consortium de sociétés internationales Dédiées au développement, au déploiement et à la gestion d applications n-tiers à base de composants centrées sur le serveur Basées sur Java 2 Platform, Standard Edition (J2SE) avec Les spécification du Serveur d Applications Des bibliothèques pour le développement d'applications d entreprises (API) Une implémentation de référence = le Serveur d Applications GlassFish 18

Ce que définit Java EE Des composants pour embarquer le code des différents éléments d une application Des conteneurs pour héberger les différents composants d une application Conteneur web Conteneur métier Des services support pour les aspects transverses Composants web Composants métiers Sécurité, transactions Des infrastructures de communication 19

Serveur de noms (JNDI) Sécurité (JAAS, JCE, JSSE) Transactions (JTA, JTS) Mails (Java Mail) Communication asynchrone (JMS) Accès aux données (JDBC) Connecteurs (JCA) Administration (JMX) Gestion du XML (JAX, DOM) Le serveur d application Java EE HTML/ XML Web Container Servlet EJB Session EJB Container EJB Entité JSP/JSF EJB Message Middleware Communication (TCP/IP, HTTP, SSL, RMI, RMI-IIOP) Services 20

Java EE Web Profile Sous-ensemble de spécifications séparé dédié au développement web Inclut Composants web Composants métier légers API communes N utilise que le conteneur Web Source : What s new in Java EE 6, Antonio Goncalves 21

Serveur de noms (JNDI) Sécurité (JAAS, JCE, JSSE) Transactions (JTA, JTS) Mails (Java Mail) Communication asynchrone (JMS) Accès aux données (JDBC) Connecteurs (JCA) Administration (JMX) Gestion du XML (JAX, DOM) Java EE Web Profile HTML/ XML Web Container JSP/JSF Servlet EJB Session EJB Container EJB Entité EJB Session EJB Entité EJB Message Middleware Communication (TCP/IP, HTTP, SSL, RMI, RMI-IIOP) Services 22

Architectures Java EE type P T R Navigateur web Java EE conteneur web Java EE conteneur d'ejb Serveur de base de données Full Profile P T R Navigateur web Java EE conteneur web Serveur de base de données Web Profile 23 La phase de développement avec Java EE

Principaux composants Java EE pour le web 24

Partie web de Java EE P T R Navigateur web Java EE conteneur web Serveur de base de données 25 La phase de développement avec Java EE

Servlets Servlet = composant Java, accessible à une URL donnée, destiné à : Récupérer les requêtes HTTP de l utilisateur Invoquer les traitements applicatifs Java correspondants Construire la page HTML de réponse pour l utilisateur Client Serveur Java EE wwwdi.supelec.fr 1 - Requête : http://wwwdi.supelec.fr/hardebolle/fichier. html /hardebolle/* 4 - Affichage : interprétation HTML HTML fichier. html 3 - Réponse : fichier.html Servlet 2 Exécution de la Servlet : Java HTML 26

Servlets Exemple @WebServlet(name="PremiereServlet", urlpatterns={"/premiereservlet") public class PremiereServlet extends HttpServlet { @Override public void doget(httpservletrequest requete, HttpServletResponse reponse) throws IOException, ServletException { reponse.setcontenttype("text/html"); PrintWriter pw = reponse.getwriter(); try { pw.print("<html>"); pw.print("<head>"); pw.print("<title>ma première servlet</title>"); pw.print("</head>"); pw.print("<body>"); pw.print("<h1>ca marche!</h1>"); pw.print("</body>"); pw.print("</html>"); finally { out.close(); Problèmes : maintenance, évolution! 27

Patron Modèle-Vue-Contrôleur (MVC) Principe = séparation des responsabilités Vue : gère les sorties = visualisation (interface utilisateur) Contrôleur : gère les entrées Traitement des actions de l utilisateur et choix des vues Gestion des modifications du modèle Modèle : gère la logique et les données Contrôleur Contrôleur Client Modèle Modèle Vue Vue 28

JavaServer Faces (JSF) Framework de composants web basé sur MVC amélioré : modèle = logique + données Navigateur Contrôleur = FacesServlet Vue = page Vue JSF Managed Logique Bean Modèle = JavaBean, EJB Modèle EJB = Enterprise JavaBean 29

Ce que JSF définit Contrôleur unique = FacesServlet Gère les événements et les interactions avec le client Modèle = Logique = Managed Beans ou «backing beans» Données = JavaBeans, Enterprise JavaBeans Vue = page JSF = arbre de composants Composants prédéfinis avec un rendu HTML Modèles de navigation Statique : liens hypertextes entre vues Dynamique : règles de navigation s appuyant sur un bean Outils : convertisseur et validateurs 30

Principe de JSF Client Serveur Java EE wwwdi.supelec.fr 1 - Requête : http://wwwdi.supelec.fr/hardebolle/fichier. xhtml /hardebolle/* 5 - Affichage : interprétation HTML HTML fichier. xhtml 4 - Réponse : fichier.xhtml 3 Rendu des composants : JSF HTML Faces Servlet Page JSF 2 Exécution du contrôleur Managed Bean fichier. xhtml 31

Composants JSF Un composant JSF = Une classe : gère les événements utilisateur UISelectOne choicemenu; Un tag : permet de l inclure dans une vue JSF <h:selectonemenu id="choice" value=" "> <f:selectitems value=" " /> </h:selectonemenu> Un rendu : génère la partie graphique de l interface utilisateur Par défaut : rendu HTML <select id="j_idt7:choice" name="j_idt7:choice" size="1"> <option value="1" selected="selected"> item 1</option> <option value="2">item 2</option> </select> Bibliothèques de composants prédéfinis et composables 32

Managed Beans (backing beans) Composant géré par le contrôleur JSF JavaBean mais avec annotations Gestion par le conteneur (création, cycle de vie ) Services basiques Identification unique, utilisation dans les composants JSF Expression Language (EL) Gestion du scope (durée de conservation de l'état) Gestion du cycle de vie via des callbacks Injection Conversion / validation des données 33

Managed Bean Exemple @ManagedBean @SessionScoped public class MyManagedBean implements Serializable { @NotNull @Size(max=50) private String name; public MyManagedBean (){ @PostConstruct public void mysetup () { this.name = "Duke"; public String getname(){ return name; public void setname(string n){ this.name = n; 34 public String sayhello() { return "Hello, I m " + this.name;

Managed Beans et Composants JSF Exemple <h:body> <f:view> <h:form> <h1>création d'un compte</h1> <p>nom :</p> <h:inputtext value="#{personbean.name" required="true" /> </h:inputtext> <p>prénom :</p> <h:inputtext value="#{personbean.fname"> <f:validatelength maximum="50"/> </h:inputtext> <h:commandbutton value="valider" action="#{personbean.createaccount()" /> </h:form> </f:view> </h:body> 35 @ManagedBean @SessionScoped public class PersonBean implements Serializable { private String name; private String fname; public CatalogBean(){ public String getname(){ return name; public void setname(string n){ this.name = n; public String createaccount(){ return "createaccountsuccess";

JSF et navigation web Configuration de la navigation (faces-config.xml) Règle de navigation = transition d'une vue à une autre Outcome = Chaine de caractère représentant le résultat d'un traitement (Ex : fail, pass, success, case5, casetruc ) Peut conditionner l'activation d'une règle de navigation Types de navigation Navigation statique = navigation par identifiant de vue / outcome Navigation dynamique = Méthode d'un backing bean rendant plusieurs outcomes possibles Règles de navigation différentes suivant les outcomes 36

JSF et navigation web Exemple <h:link outcome="/etape1.xhtml" value="aller à l'étape 1"/> <h:link outcome="step1" value="aller à l'étape 1"/> <h:commandlink action="step1" value="aller à l'étape 1"/> Configuration <navigation-rule> <from-view-id>/etape0.xhtml</from-view-id> <navigation-case> <from-outcome>step1</from-outcome> <to-view-id>/etape1.xhtml</to-view-id> </navigation-case> </navigation-rule> <h:commandlink action="#{mybean.alleretapesuivante()" value="aller à l'étape suivante" /> Managed Bean public String alleretapesuivante(){ if( ){ return "step1"; else if( ){ return "step2"; return "default"; 37

Sessions et composants web Session web = maintient d'un état conversationnel avec un client à travers plusieurs couples requête / réponse Permet de stocker des informations alors que l utilisateur change plusieurs fois de pages web Session JSF = session web Mettre des données en sessions avec un ManagedBean @ManagedBean @SessionScoped public class PersonBean implements Serializable { Mettre des données en session «à la main» ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext(); ctx.getsession(ø/true/false); ctx.getsessionmap().put(key, value); ctx.getsessionmap().get(key); 38

Persistance des données 39

Partie persistance de Java EE P T R Navigateur web Java EE conteneur web Serveur de base de données 40 La phase de développement avec Java EE

Bases de données Base de données = ensemble de tables Table = colonnes * lignes Colonnes = propriétés Ligne = ensemble de valeurs pour les différentes propriété Clé primaire = identifiant unique d une ligne Stockage persistant sur un serveur Gestion par un SGBD (Système de Gestion de Base de Données) 41

Persistance en base de données Besoin = Create + Read + Update + Delete (CRUD) Problème = mapping relationnel / objet des données Serveur d'applications Java EE Serveur de base de données Application Objets Java Conversion Connecteur Connecteur Lignes de table Données Objet Relationnel 42

Java Persistence API (JPA) JPA = spécification d un mapping relationnel / objet (Object Relational Mapping ORM) Composant pour accéder à la base de données = EntityManager Prédéfini (pas besoin de l écrire) Générique Composants pour stocker les données = EJB Entity Langage de requêtes = Java Persistence Query Language (JPQL) Plusieurs implémentations EclipseLink (Oracle TopLink) JBoss Hibernate S'appuie sur un connecteur de base de données Ex : JDBC 43

Principe de JPA Serveur Java EE Serveur de bases de données Bean, Vue Entity Manager JDBC JDBC Application Objets EJB Entity Conversion 44

EJB Entity Composant persistant partagé par plusieurs clients Représente des données métiers stockées dans une base de données Une classe correspond à une table Les attributs définis dans la classe correspondent aux colonnes de la table Une instance de la classe (= un objet) représente une ligne de la table Posséde une identité explicite (clé primaire) EJB Entity JavaBean mais Avec des annotations qui définissent le mapping relationnel/objet Gestion par le conteneur (création, cycle de vie ) 45

EJB Entity Exemple @Entity @Table(name = "person") public class Personne implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) @Column(name = "id") private int id; @Basic(optional = false) @Column(name = "name") private String nom; public Personne() { super(); public int getid() { return this.id; public void setid(int id) { this.id = id; public String getnom() { return this.nom; public void setnom(string nom) { this.nom = nom; 46

JPA et JSF Serveur Java EE Serveur de bases de données Page JSF Managed Bean Entity Manager JDBC JDBC fichier. xhtml Application Objets EJB Entity Conversion 47

JPA et patron façade Patron Façade = ajout d un intermédiaire entre l application et l EntityManager Page JSF Managed Bean EJB Session Stateless Entity Manager JDBC fichier. xhtml Application Objets EJB Entity Conversion Découplage de l accès aux ressources 48

Utilisation d un EJB Session Stateless en façade EJB Session Stateless Façade (généré automatiquement) @Stateless public class MyFacadeBean implements Serializable { @PersistenceContext (unitname = "person-pu") private EntityManager em; Autre composant (ManagedBean JSF, EJB ) @ManagedBean public class MyMBean { @EJB MyFacadeBean bean; public MyFacadeBean(){ public void create(personne personne) { em.persist(personne); public void createpersonne(string name){ Personne p = new Personne(); p.setname(name); bean.create(p); 49

Application Java EE 50

Application Java EE Application = composants + métadonnées Composants Distribués ou non Différents types et responsabilités Métadonnées Informations nécessaires à la configuration ( annotations) Liens entre composants, paramètres Aspects transverses : sécurité, transactions Informations nécessaires au déploiement ( fichiers XML) Lien avec les ressources du serveur d'applications Lien avec les ressources accessibles depuis le serveur 51

Packaging application.ear composants métadonnées moduleweb.war moduleejb.jar 52

A vous de jouer! 53

Annexes 54

Cycle de vie de la FacesServlet Source : Blog Sravan Modugula 55

Enterprise JavaBeans : EJBs «Composants distribués transactionnels réutilisables et centrés sur la logique métier» JavaBean mais avec annotations Gestion par le conteneur (création, cycle de vie ) Services additionnels : Annotations spécifiques Transactions, persistance Différents types EJB Session EJB Message EJB Entity EJB Session Stateless EJB Session Stateful EJB Session Singleton 56

EJB Entity Mapping des relations Dans la classe Table1 @OneToOne private Table2 t2object; Dans la classe Table3 @OneToMany(mappedBy="t3object", cascade= {CascadeType.ALL) private List<Table4> t4list; Dans la classe Table4 @ManyToOne @JoinColumn(name="table3_id") private Table3 t3object; Dans la classe Table5 @ManyToMany(cascade={CascadeType.ALL) @JoinTable(name="t5_t6", joincolumns={@joincolumn(name="table5_id"), inversejoincolumns={@joincolumn(name = "table6_id")) private List<Table6> t6list; 57

JPQL JPQL = langage de requêtes pour manipuler les entités Syntaxe SQL Requêtes exécutées par l EntityManager Query Encapsule une requête Permet d obtenir les résultats Query q = em.createquery( "select p from Personne p where p.nom='robert'"); q.getsingleresult(); NamedQuery = requête prédéfinie @Entity @Table(name = "person") @NamedQuery(name="getPersonByName", query="select a from Personne a where a.name = :name") public class Personne implements Serializable { @PersistenceContext(unitName = "person-pu") private EntityManager em; public Personne getpersonneparnom(string nom) { Query q = em.createnamedquery("getpersonbyname"); q.setparameter("name", nom); return (Personne) q.getsingleresult(); 58

Sécurité Caractéristiques de la sécurité d'une application («DICT/P») Intégrité et confidentialité Autorisation (contrôle d'accès) = identification + authentification Traçabilité / preuve : non répudiation, audit Disponibilité : qualité de service Mécanismes mis en œuvre dans Java EE Plusieurs niveaux de sécurité Niveau application Niveau transport Niveau message (web services) Plusieurs façons de sécuriser Sécurité déclarative via les descripteurs de déploiement et via les annotations Sécurité programmatique (déconseillée) Applicable aux composants web et aux EJBs 59

Contrôle d'accès : vocabulaire Fondamentaux User = informations d identité d un utilisateur Group = ensemble d'utilisateurs (généralement classifiés selon une caractéristique commune) Realm = ensemble d'utilisateurs et de groupes (implémenté par une base de données, un annuaire, un fichier ) Role = privilège d'accès sur un ensemble de ressources Pour contrôler l accès à une application Role mapping = associe un rôle à un utilisateur / groupe pour une ressource Une fois l utilisateur identifié et authentifié Principal = information identifiant l utilisateur ( login) Credential = information authentifiant l utilisateur ( mot de passe) 60

Contrôle d accès sur un composant web Définition des rôles via le fichier «web.xml» <security-constraint> <display-name>contrainte d accès admins</display-name> <web-resource-collection> <web-resource-name>ressources admins</web-resource-name> <description>administration du site</description> <url-pattern>/secureadmin/*</url-pattern> </web-resource-collection> <auth-constraint> <description>contrainte d authentification admins</description> <role-name>admins</role-name> </auth-constraint> </security-constraint> <security-role> <description/> <role-name>admins</role-name> </security-role> <login-config> <auth-method>form</auth-method> <realm-name>jdbcrealm</realm-name> <form-login-config> <form-login-page>/login.xhtml</form-login-page> <form-error-page>/loginerror.xhtml</form-error-page> </form-login-config> </login-config> 61

Contrôle d accès sur un composant web Role Mapping = correspondance utilisateur / groupe rôle via le fichier «sun-web.xml» <security-role-mapping> <role-name>admins</role-name> <group-name>admins</group-name> </security-role-mapping> <security-role-mapping> <role-name>webusers</role-name> <principal-name>test</principal-name> </security-role-mapping> 62