Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parMathieu Lessard Modifié depuis plus de 6 années
1
15 Développement d'application de base de données en Java
18/09/2018 © Robert Godin. Tous droits réservés.
2
Patron d'architecture en couche (layer)
Couche présentation Couche contrôle (coordonnateur d'application) Couche domaine d'application (ou métier) Couche de services. persistance transaction communication sécurité etc. 18/09/2018 © Robert Godin. Tous droits réservés.
3
15.1 Application Java/JDBC client-serveur
18/09/2018 © Robert Godin. Tous droits réservés.
4
Cas d ’utilisation EnregistrerPrêts
18/09/2018 © Robert Godin. Tous droits réservés.
5
Cas de test pour scénario normal
18/09/2018 © Robert Godin. Tous droits réservés.
6
Cas d ’exception : nombre maximal d'emprunts (ici 2) atteint
18/09/2018 © Robert Godin. Tous droits réservés.
7
Cas d ’exception : exemplaire non disponible
18/09/2018 © Robert Godin. Tous droits réservés.
8
Cas d'utilisation et classes métiers concernées
18/09/2018 © Robert Godin. Tous droits réservés.
9
Patron courtier BD : classes du programme Java et tables concernées
~ Data Access Object (DAO) + Domain Data Transfer Object 18/09/2018 © Robert Godin. Tous droits réservés.
10
Classe Java pour Personne
Lecteurs/modifieurs pour attributs (peut en faire un Java Bean) 18/09/2018 © Robert Godin. Tous droits réservés.
11
Classe Java pour Utilisateur
Lecteurs/modifieurs pour naviguer les associations Lecteur pour donnée dérivée 18/09/2018 © Robert Godin. Tous droits réservés.
12
Classe Java pour Membre
Attributs et méthodes static pour attributs de classe (ou singleton) 18/09/2018 © Robert Godin. Tous droits réservés.
13
Classe Java pour Employé
18/09/2018 © Robert Godin. Tous droits réservés.
14
© Robert Godin. Tous droits réservés.
Classe Java pour Prêt 18/09/2018 © Robert Godin. Tous droits réservés.
15
Classe Java pour PrêtEnCours
18/09/2018 © Robert Godin. Tous droits réservés.
16
Classe Java pour Exemplaire
18/09/2018 © Robert Godin. Tous droits réservés.
17
CourtierBDUtilisateur
18/09/2018 © Robert Godin. Tous droits réservés.
18
Diagramme de séquence pour CourtierBDUtilisateur
18/09/2018 © Robert Godin. Tous droits réservés.
19
Classe UsineConnection
18/09/2018 © Robert Godin. Tous droits réservés.
20
Courtier CourtierBDPrêtEnCours : chercherLesPrêtsEnCours
18/09/2018 © Robert Godin. Tous droits réservés.
21
Matérialisation d ’un PrêtEnCours : insérerPrêtEnCours
18/09/2018 © Robert Godin. Tous droits réservés.
22
Enjeux de la conception des courtiers
Granularité des courtiers Granularité de matérialisation/dématérialisation minimiser les appels au serveur de BD limiter le volume de données à transférer 18/09/2018 © Robert Godin. Tous droits réservés.
23
Classe de contrôle ControleEnregistrerPrets
18/09/2018 © Robert Godin. Tous droits réservés.
24
© Robert Godin. Tous droits réservés.
18/09/2018 © Robert Godin. Tous droits réservés.
25
15.1.1 Enjeux de conception d'une application Java/JDBC
Dépendance au temps de réflexion 18/09/2018 © Robert Godin. Tous droits réservés.
26
Limiter les verrouillages ?
18/09/2018 © Robert Godin. Tous droits réservés.
27
Limiter la durée des transactions
Contraintes de sérialisabilité ? 18/09/2018 © Robert Godin. Tous droits réservés.
28
Vérification des contraintes par le serveur
Non sérialisabilité perçue par T2 18/09/2018 © Robert Godin. Tous droits réservés.
29
Contrôle de concurrence optimiste par estampillage explicite
Lecture en une première transaction Note l’estampille courante (ou numéro de version, …) Écriture en une deuxième transaction distincte Vérifie si l’état a changé depuis la lecture Si non, met à jour les données et l’estampille Si oui, annulation Ne bloque pas les objets lus 18/09/2018 © Robert Godin. Tous droits réservés.
30
Réduire l'interactivité
18/09/2018 © Robert Godin. Tous droits réservés.
31
ControleEnregistrerPretsSimple
18/09/2018 © Robert Godin. Tous droits réservés.
32
Libérer la connexion entre les appels
Transaction ne peut chevaucher les appels Ouverture/fermeture couteuse Solution : connection pooling (JDBC 2) 18/09/2018 © Robert Godin. Tous droits réservés.
33
© Robert Godin. Tous droits réservés.
Gestion de la sécurité Qui gère l ’idUtilisateur et le mot de passe ? par les données : le SGBD par les traitements : le programme client 18/09/2018 © Robert Godin. Tous droits réservés.
34
ControleEnrPretsSecuriteParDonnees
18/09/2018 © Robert Godin. Tous droits réservés.
35
ControleEnrPretsSecuriteParTraitement
18/09/2018 © Robert Godin. Tous droits réservés.
36
15.1.3 Façade pour les services de la couche application
18/09/2018 © Robert Godin. Tous droits réservés.
37
Diagramme de séquence pour ControleEnregistrerPretAvecFacade
Dépendance réduite par rapport à la couche persistence 18/09/2018 © Robert Godin. Tous droits réservés.
38
Patron d'objet de transfert de données (OTD)
18/09/2018 © Robert Godin. Tous droits réservés.
39
ControleEnregistrerPretsSimpleAvecFacade
Connexion libérée entre les appels 18/09/2018 © Robert Godin. Tous droits réservés.
40
15.2 Développement d'applications Web par servlet Java
18/09/2018 © Robert Godin. Tous droits réservés.
41
© Robert Godin. Tous droits réservés.
Principe de base du Web : le protocole HTTP et le langage de présentation HTML 18/09/2018 © Robert Godin. Tous droits réservés.
42
15.2.2 Développement de servlet Java
18/09/2018 © Robert Godin. Tous droits réservés.
43
© Robert Godin. Tous droits réservés.
Diagramme de séquence de l'invocation de la servlet ServletEnregistrerPretSimpleFacade Réutilisation des classes du client-serveur 18/09/2018 © Robert Godin. Tous droits réservés.
44
© Robert Godin. Tous droits réservés.
18/09/2018 © Robert Godin. Tous droits réservés.
45
© Robert Godin. Tous droits réservés.
18/09/2018 © Robert Godin. Tous droits réservés.
46
15.2.3 Cycle de vie d'une servlet
Compilation et démarrage à la première invocation (par conteneur) init() appelé une fois permet d ’initialiser des ressources (e.g. connexion) nouveau fil à chaque invocation d ’une méthode de service (doGet, doPost,…) destroy() à la fin e.g. fermer connexion 18/09/2018 © Robert Godin. Tous droits réservés.
47
15.2.4 Gestion d'une session HTTP dans une servlet
La FORM n ’envoie que le idUtilisateur 18/09/2018 © Robert Godin. Tous droits réservés.
48
© Robert Godin. Tous droits réservés.
FormIdentificationUtilisateurFacade.html 18/09/2018 © Robert Godin. Tous droits réservés.
49
EnregistrerPrets en deux servlets
18/09/2018 © Robert Godin. Tous droits réservés.
50
© Robert Godin. Tous droits réservés.
18/09/2018 © Robert Godin. Tous droits réservés.
51
© Robert Godin. Tous droits réservés.
18/09/2018 © Robert Godin. Tous droits réservés.
52
15.2.5 DataSource, ConnectionPoolDataSource et PooledConnection
Passage par serveur JNDI (Java Naming and Directory Interface) e.g. serveur LDAP repérage de ressources (e.g. serveur BD) accès sécurisé 18/09/2018 © Robert Godin. Tous droits réservés.
53
Ouverture d ’une Connection en passant par DataSource
18/09/2018 © Robert Godin. Tous droits réservés.
54
© Robert Godin. Tous droits réservés.
Enregistrement du DataSource par descripteur de déploiement XML pour serveur embarqué OC4J de Oracle9i JDevelopper (généré par JDevelopper) 18/09/2018 © Robert Godin. Tous droits réservés.
55
Partage d'un pool de connexions
18/09/2018 © Robert Godin. Tous droits réservés.
56
15.2.6 Mécanismes de sécurité pour l'accès à un servlet
Sécurité programmatique Sécurité déclarative par le conteneur rôles/utilisateurs géré par conteneur 18/09/2018 © Robert Godin. Tous droits réservés.
57
15.3 Architecture pour la persistance transparente
Persistance gérée par la classe métier Transparent au client Mécanisme paresseux de matérialisation/dématérialisation gestion de cache transactionnelle programmation complexe Norme Java Data Objects (JDO) inspirée de ODMG outils : 18/09/2018 © Robert Godin. Tous droits réservés.
58
15.4 Norme EJB de J2EE (http://java.sun.com/products/ejb/)
Transparence « extrême » persistance répartition services Spécification déclarative de services comportement transactionnel sécurité partage de ressources (CPU, mémoire, serveurs, ...) partage transparent d’un bassin d’objets EJB (pooling) entre clients Prise en charge des services par le conteneur à EJB 18/09/2018 © Robert Godin. Tous droits réservés.
59
Séparation propre des responsabilités (rôles)
Fournisseur de EJB (EnterpriseBean Provider) développe les composantes EJB Assembleur d'application (Application Assembler) . assemble EJB + servlet, JSP, HTML, etc. Déployeur (Deployer) déploie les EJB dans leur environnement d'exécution Fournisseur de serveur EJB (EJB Server Provider). serveur EJB : services de bas niveau pour le conteneur EJB Fournisseur de conteneur EJB (EJB Container Provider) conteneur EJB : environnement de déploiement et d'exécution des EJB Administrateur de Système (System Administrator) administre serveur et le conteneur EJB 18/09/2018 © Robert Godin. Tous droits réservés.
60
© Robert Godin. Tous droits réservés.
Catégories de EJB EJB session (Session Bean) service d ’objet distant un seul client à la fois par objet partage d’un bassin d’objets entre clients état au besoin entre les appels stateful/stateless session EJB non persistent (perdu suite à une panne) EJB entité (Entity Bean) services d'objet distant persistent objet ~ proxy pour une ligne d'une table un objet EJB entité peut être partagé par plusieurs clients EJB message (Message Bean) service de message 18/09/2018 © Robert Godin. Tous droits réservés.
61
© Robert Godin. Tous droits réservés.
Codage d ’un EJB Interface home usine à objet EJB Interface à distance (remote) accès aux méthodes d'un objet EJB Classe bean (bean class) implémente les méthodes de l'objet EJB 18/09/2018 © Robert Godin. Tous droits réservés.
62
© Robert Godin. Tous droits réservés.
Développement d'un EJB session sans état : FacadeEnrPretSimpleSessionEJB Interface home (usine à EJB) Interface remote (interface à l’objet EJB) 18/09/2018 © Robert Godin. Tous droits réservés.
63
© Robert Godin. Tous droits réservés.
18/09/2018 © Robert Godin. Tous droits réservés.
64
Descripteur de déploiement XML
18/09/2018 © Robert Godin. Tous droits réservés.
65
© Robert Godin. Tous droits réservés.
Client du EJB : façade locale qui délègue à la façade EJB distante (patron Business Delegate) 18/09/2018 © Robert Godin. Tous droits réservés.
66
JDevelopper 10g (déploiement de défaut différent)
18/09/2018 © Robert Godin. Tous droits réservés.
67
Interposition transparente d ’objets
Conteneur de bean 18/09/2018 © Robert Godin. Tous droits réservés.
68
© Robert Godin. Tous droits réservés.
Dans ServletEnregistrerPretsSimpleFacade remplacer FacadeEnregistrerPretsSimple par une FacadeEJBEnregitrerPretSimple 18/09/2018 © Robert Godin. Tous droits réservés.
69
15.4.2 Développement d'un EJB session avec état
18/09/2018 © Robert Godin. Tous droits réservés.
70
© Robert Godin. Tous droits réservés.
Classe bean État maintenu entre les appels Méthode du cycle de vie appelée à la création de l’objet avant ejbCreate() NB setSessionContext() permet d’initialiser la connexion au DataSource (interdit dans ejbCreate()…) 18/09/2018 © Robert Godin. Tous droits réservés.
71
© Robert Godin. Tous droits réservés.
Classe Bean (suite) : méthode métier identique à FacadeEnregistrerPrets 18/09/2018 © Robert Godin. Tous droits réservés.
72
Processus de création d ’un EJB avec état
18/09/2018 © Robert Godin. Tous droits réservés.
73
Client du EJB : façade locale qui délègue à la façade EJB distante
18/09/2018 © Robert Godin. Tous droits réservés.
74
© Robert Godin. Tous droits réservés.
Dans ServletIdentificationUtilisateurFacade et ServletTerminerPretFacade remplacer FacadeEnregistrerPrets par une FacadeEJBEnregistrerPrets 18/09/2018 © Robert Godin. Tous droits réservés.
75
15.4.3 Support de transactions distribuées
Plusieurs ressources indépendantes serveur BD, serveur JMS, ... Protocole transparent de transaction répartie Démarcation programmatique ou déclarative 18/09/2018 © Robert Godin. Tous droits réservés.
76
© Robert Godin. Tous droits réservés.
Démarcation programmatique de transaction distribuée (bean managed transaction demarcation) Deux connexions indépendantes ! 18/09/2018 © Robert Godin. Tous droits réservés.
77
© Robert Godin. Tous droits réservés.
Classe bean Deux connexions 18/09/2018 © Robert Godin. Tous droits réservés.
78
© Robert Godin. Tous droits réservés.
Classe bean 18/09/2018 © Robert Godin. Tous droits réservés.
79
Descripteur de déploiement XML
18/09/2018 © Robert Godin. Tous droits réservés.
80
© Robert Godin. Tous droits réservés.
Démarcation déclarative de transaction (container managed transaction demarcation) 18/09/2018 © Robert Godin. Tous droits réservés.
81
© Robert Godin. Tous droits réservés.
Classe bean 18/09/2018 © Robert Godin. Tous droits réservés.
82
balise <trans-attribut>
NotSupported Required Supports RequiresNew Mandatory Never 18/09/2018 © Robert Godin. Tous droits réservés.
83
© Robert Godin. Tous droits réservés.
EJB entité Bean Managed Persistence - BMP codage du SQL/JDBC Container Managed Persistence - CMP SQL généré par conteneur associations depuis EJB 2 héritage pas encore supporté clé primaire obligatoire ... 18/09/2018 © Robert Godin. Tous droits réservés.
84
© Robert Godin. Tous droits réservés.
Classe de clé primaire 18/09/2018 © Robert Godin. Tous droits réservés.
85
© Robert Godin. Tous droits réservés.
Interface remote 18/09/2018 © Robert Godin. Tous droits réservés.
86
© Robert Godin. Tous droits réservés.
Interface home 18/09/2018 © Robert Godin. Tous droits réservés.
87
© Robert Godin. Tous droits réservés.
Classe bean 18/09/2018 © Robert Godin. Tous droits réservés.
88
Descripteur de déploiement XML
18/09/2018 © Robert Godin. Tous droits réservés.
89
Descripteur spécifique au conteneur Orion
18/09/2018 © Robert Godin. Tous droits réservés.
90
© Robert Godin. Tous droits réservés.
Client du EJB 18/09/2018 © Robert Godin. Tous droits réservés.
91
© Robert Godin. Tous droits réservés.
Client du EJB (suite) 18/09/2018 © Robert Godin. Tous droits réservés.
92
© Robert Godin. Tous droits réservés.
Client du EJB (suite) 18/09/2018 © Robert Godin. Tous droits réservés.
93
Façade EJB session accède au EJB entité
18/09/2018 © Robert Godin. Tous droits réservés.
94
© Robert Godin. Tous droits réservés.
EJB 2 Interfaces locales pour accès léger EJBLocalHome, EJBLocalObject Gestion des associations par le conteneur EJBQL pour la spécification des findXXX() 18/09/2018 © Robert Godin. Tous droits réservés.
95
© Robert Godin. Tous droits réservés.
EJB 3 Simplification du développement d’un EJB Annotation par métadonnées dans le code remplace descripteur de déploiement EJB codé comme une classe ordinaire (POJO) 18/09/2018 © Robert Godin. Tous droits réservés.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.