L’architecture J2EE [email protected]. Plan (1/3) Principes de J2EE Principes de J2EE...

55
L’architecture J2EE L’architecture J2EE [email protected] [email protected]

Transcript of L’architecture J2EE [email protected]. Plan (1/3) Principes de J2EE Principes de J2EE...

Page 1: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

L’architecture J2EEL’architecture J2EE

[email protected]@free.fr

Page 2: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Plan (1/3)Plan (1/3)

Principes de J2EEPrincipes de J2EE Composants, conteneurs et servicesComposants, conteneurs et services APIAPI RôlesRôles ContratsContrats

Le contrat côté clientLe contrat côté client Le contrat du conteneurLe contrat du conteneur

Page 3: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Plan (2/3)Plan (2/3)

Topologie(s) d'une application J2EE Topologie(s) d'une application J2EE Application multitiersApplication multitiers Application webApplication web Application Business-to-businessApplication Business-to-business

Composants J2EEComposants J2EE Conteneur de composants J2EEConteneur de composants J2EE Clients J2EEClients J2EE Composants web Composants web Composants Enterprise JavaBeansComposants Enterprise JavaBeans

Page 4: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Plan (3/3)Plan (3/3)

Technologies J2EETechnologies J2EE Remote Method Interface (RMI)Remote Method Interface (RMI) JavaBeansJavaBeans Java Naming and Directory Interface Java Naming and Directory Interface

(JNDI)(JNDI) Java DataBase Connectivity (JDBC)Java DataBase Connectivity (JDBC)

Page 5: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Principes de J2EE (1/3)Principes de J2EE (1/3) L’architecture J2EE est une architecture d’application distribuée à base de L’architecture J2EE est une architecture d’application distribuée à base de

composants. composants.

Elle identifie et donne les spécifications des composants de l’application :Elle identifie et donne les spécifications des composants de l’application : composants logiciels ou beans (EJB),composants logiciels ou beans (EJB), conteneurconteneur serveursserveurs clientsclients

Les conteneurs isolent les beans du client et d’une implémentation spécifique du Les conteneurs isolent les beans du client et d’une implémentation spécifique du serveur.serveur.

Les beans sont installés dans la partie serveur d’une application J2EE.Les beans sont installés dans la partie serveur d’une application J2EE.

Page 6: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Principes de J2EE (2/3)Principes de J2EE (2/3) Les conteneurs et serveurs implémentent les mécanismes de bas niveau utilisés Les conteneurs et serveurs implémentent les mécanismes de bas niveau utilisés

par les applications:par les applications: transactions,transactions, persistance,persistance, gestion de la mémoire,gestion de la mémoire, SécuritéSécurité

Les spécifications J2EE s’intéressent aux activités d’une application liées:Les spécifications J2EE s’intéressent aux activités d’une application liées: au développement, au développement, au déploiement,au déploiement, à l’exécutionà l’exécution

Page 7: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Principes de J2EE (3/3)Principes de J2EE (3/3)

Page 8: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

RôlesRôles J2EE définit différents rôles associés aux différentes parties intervenant dans la J2EE définit différents rôles associés aux différentes parties intervenant dans la

production d’une applicationproduction d’une application

Page 9: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Contrats (1/2)Contrats (1/2) L’architecture J2EE définit des contrats associés à un bean. Ces L’architecture J2EE définit des contrats associés à un bean. Ces

contrats sont passés entre le conteneur et les clients qui utilisent le contrats sont passés entre le conteneur et les clients qui utilisent le beans. Ce sont des règles obligatoires qui doivent être respectées par beans. Ce sont des règles obligatoires qui doivent être respectées par le fournisseur de l’EJB et le conteneur.le fournisseur de l’EJB et le conteneur.

Le but des contrats est de fournir un modèle de développement Le but des contrats est de fournir un modèle de développement standard pour les applications qui utilisent les composants EJBs.standard pour les applications qui utilisent les composants EJBs.

En particulier, 3 contrats sont définis:En particulier, 3 contrats sont définis: le contrat côté client doit permettre de fournir une vue uniforme du beans au le contrat côté client doit permettre de fournir une vue uniforme du beans au

client, indépendante de la plate-forme de déploiementclient, indépendante de la plate-forme de déploiement le contrat côté conteneur doit permettre la portabilité des beans sur le contrat côté conteneur doit permettre la portabilité des beans sur

différents serveurs EJBsdifférents serveurs EJBs le contrat côté déploiement: fournir un format de fichier standard pour le contrat côté déploiement: fournir un format de fichier standard pour

distribuer les beans; ce format doit être supporté par tous les outils liés aux distribuer les beans; ce format doit être supporté par tous les outils liés aux EJBs.EJBs.

Page 10: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Contrats (2/2)Contrats (2/2)

Page 11: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Le contrat côté clientLe contrat côté client Il précise que le bean doit pouvoir être localisé en utilisant JNDI.Il précise que le bean doit pouvoir être localisé en utilisant JNDI.

Il précise une interface standard d’accès au beans qui doit être fournie par le Il précise une interface standard d’accès au beans qui doit être fournie par le fournisseur d’EJBs (EJB provider). fournisseur d’EJBs (EJB provider).

L’interface standard définit en fait 2 interfaces à implémenter par les beans :L’interface standard définit en fait 2 interfaces à implémenter par les beans : l’interface Home contient les méthodes liées à la gestion du beans: create, l’interface Home contient les méthodes liées à la gestion du beans: create,

remove, finder,…remove, finder,… l’interface Remote contient les méthodes de l’applicationl’interface Remote contient les méthodes de l’application

Le conteneur doit implémenter un mécanisme de délégation pour faire Le conteneur doit implémenter un mécanisme de délégation pour faire suivre les appels au bean. suivre les appels au bean.

Il n’y a pas de communication directe entre le client et le bean mais une Il n’y a pas de communication directe entre le client et le bean mais une communication entre le client et le conteneur, ce dernier se chargeant de communication entre le client et le conteneur, ce dernier se chargeant de retransmettre les messages au bean.retransmettre les messages au bean.

Page 12: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Le contrat du conteneurLe contrat du conteneur Le conteneur doit gérer le cycle de vie et l’état des beans, la sécurité, les Le conteneur doit gérer le cycle de vie et l’état des beans, la sécurité, les

transactions distribuées, la concurrence et l’extensibilité.transactions distribuées, la concurrence et l’extensibilité.

Le conteneur appelle des méthodes fournies par le bean lorsque c’est Le conteneur appelle des méthodes fournies par le bean lorsque c’est nécessaire (callback methods).nécessaire (callback methods).

Le conteneur doit gérer plusieurs types de beans:Le conteneur doit gérer plusieurs types de beans: Beans de session (session beans)Beans de session (session beans) Beans d’entité (entity beans)Beans d’entité (entity beans)

Les spécifications EJB 2.0 ajoutent un 3ème type de beans, les beans à Les spécifications EJB 2.0 ajoutent un 3ème type de beans, les beans à message (message driven beans).message (message driven beans).

Page 13: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Topologie(s) d'une Topologie(s) d'une application J2EE application J2EE

Schéma généralSchéma général

Page 14: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Application multi-tiersApplication multi-tiers

Page 15: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Client autonomeClient autonome

Page 16: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Client autonome "EJB-Client autonome "EJB-centric"centric"

Page 17: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Application webApplication web

Page 18: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Détails application webDétails application web

Page 19: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Application Business-to-Application Business-to-businessbusiness

Page 20: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Composants J2EE (1/2)Composants J2EE (1/2) Un composant est une unité logicielle de niveau applicatif.Un composant est une unité logicielle de niveau applicatif.

En plus des JavaBeans, qui font partie du J2SE, J2EE supporte les En plus des JavaBeans, qui font partie du J2SE, J2EE supporte les types de composants suivants :types de composants suivants :

applets, applets, application clientes, application clientes, composants Enterprise JavaBeans (EJB), composants Enterprise JavaBeans (EJB), composants Web, composants Web, composants adaptateurs de ressourcecomposants adaptateurs de ressource

Page 21: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Composants J2EE (2/2)Composants J2EE (2/2) Les applets et applications clientes sont exécutées sur le poste du Les applets et applications clientes sont exécutées sur le poste du

client tandis que les composants EJB, Web et adaptateurs de client tandis que les composants EJB, Web et adaptateurs de ressources fonctionnent sur le serveur.ressources fonctionnent sur le serveur.

A l'exception des adaptateurs de ressources, les concepteurs et A l'exception des adaptateurs de ressources, les concepteurs et développeurs d'application développent les composants d'une développeurs d'application développent les composants d'une application J2EE.application J2EE.

Les adapteurs de ressources et logiciels associés sont en général Les adapteurs de ressources et logiciels associés sont en général vendus par les fournisseurs de systèmes d'information de l'entreprise et vendus par les fournisseurs de systèmes d'information de l'entreprise et ensuite déployés sur les serveurs pour accèder aux données.ensuite déployés sur les serveurs pour accèder aux données.

Page 22: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Conteneur de composants Conteneur de composants J2EEJ2EE

Tous les composants J2EE dépendent à l'exécution d'un entité système Tous les composants J2EE dépendent à l'exécution d'un entité système baptisée conteneur (container).baptisée conteneur (container).

Les conteneurs fournissent aux composants des services de bases Les conteneurs fournissent aux composants des services de bases comme la gestion du cycle de vie, la sécurité, le déploiement et l'exécution comme la gestion du cycle de vie, la sécurité, le déploiement et l'exécution en thread. en thread.

Comme c'est le conteneur qui gère ces services, la plupart des Comme c'est le conteneur qui gère ces services, la plupart des paramètres de configuration de ces services peuvent être configurés lors paramètres de configuration de ces services peuvent être configurés lors du déploiement des composants en fonction de la plateforme d'accueil.du déploiement des composants en fonction de la plateforme d'accueil.

Un fournisseur d'Enterprise Java Bean peut spécifier un nom de base de Un fournisseur d'Enterprise Java Bean peut spécifier un nom de base de données auquel le composant doit accéder et c'est seulement lors du données auquel le composant doit accéder et c'est seulement lors du déploiement que les informations d'accès à la base (nom d'utilisateur et déploiement que les informations d'accès à la base (nom d'utilisateur et mot de passe ) seront configurées.mot de passe ) seront configurées.

Les sections suivantes donnent un bref apercu des composants, qui Les sections suivantes donnent un bref apercu des composants, qui seront étudiés plus en détail par la suite.seront étudiés plus en détail par la suite.

Page 23: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Clients J2EEClients J2EE La plateforme J2EE prévoit que plusieurs types de clients puissent La plateforme J2EE prévoit que plusieurs types de clients puissent

accéder à une même application et interagir avec les composants côté accéder à une même application et interagir avec les composants côté serveur.serveur.

Page 24: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

AppletsApplets Les Applets sont des clients Java qui s'exécutent habituellement dans Les Applets sont des clients Java qui s'exécutent habituellement dans

un navigateur web et qui ont accès à toutes les possibilités du langage un navigateur web et qui ont accès à toutes les possibilités du langage Java. Java.

Les applications J2EE peuvent utiliser des clients applets pour avoir Les applications J2EE peuvent utiliser des clients applets pour avoir des interfaces utilisateurs plus puissantes que celles connues en des interfaces utilisateurs plus puissantes que celles connues en HTML.HTML.

Les applets communiquent avec le serveur par HTTP.Les applets communiquent avec le serveur par HTTP.

Page 25: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Applications clientesApplications clientes Des applications clientes s'exécutent dans leur propre conteneur client.Des applications clientes s'exécutent dans leur propre conteneur client.

Le conteneur client est un jeu de librairies et d'API qui supportent le code client, Le conteneur client est un jeu de librairies et d'API qui supportent le code client, et mettent à sa disposition un moyen d'accéder aux composants métiers de et mettent à sa disposition un moyen d'accéder aux composants métiers de l'application). l'application).

Les applications clientes ont des interfaces utilisateurs qui peuvent directement Les applications clientes ont des interfaces utilisateurs qui peuvent directement interagir avec le tier EJB en utilisant RMI-IIOP. interagir avec le tier EJB en utilisant RMI-IIOP.

Les clients ont un accès complet.aux services de la plateforme J2EE comme les Les clients ont un accès complet.aux services de la plateforme J2EE comme les services de nommage JNDI, l'envoi de messages et JDBC. services de nommage JNDI, l'envoi de messages et JDBC.

Le conteneur client gére l'accès à ces services et les communications RMI-IIOP. Le conteneur client gére l'accès à ces services et les communications RMI-IIOP.

Page 26: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Applications clientes Applications clientes Java Web StartJava Web Start

Les applications clientes Java Web Start sont des applications autonomes Les applications clientes Java Web Start sont des applications autonomes reposant sur les JFC et Swing et capables d'utiliser les services de la plateforme reposant sur les JFC et Swing et capables d'utiliser les services de la plateforme J2EE par l'intermédiaire de la technologie Java WebStart. J2EE par l'intermédiaire de la technologie Java WebStart.

Ces applications peuvent être installées par le web.Ces applications peuvent être installées par le web.

Elles communiquent avec le serveur en utilisant du XML encapsulé dans du Elles communiquent avec le serveur en utilisant du XML encapsulé dans du HTTP(S).HTTP(S).

Page 27: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Clients sans filClients sans fil Les clients sans fil sont basés sur la technologie Mobile Information Device Les clients sans fil sont basés sur la technologie Mobile Information Device

Profile (MIDP), en conjonction avec Connected Limited Device Configuration Profile (MIDP), en conjonction avec Connected Limited Device Configuration (CLDC) qui fournissent un environnement J2ME complet pour les dispositifs (CLDC) qui fournissent un environnement J2ME complet pour les dispositifs sans fil.sans fil.

Page 28: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Composants web Composants web Un composant web est une entité logicielle qui fournit une réponse à une Un composant web est une entité logicielle qui fournit une réponse à une

requête.requête. Les composants web génèrent habituellement l'interface utilisateur d'une Les composants web génèrent habituellement l'interface utilisateur d'une

application web.application web. La plate-forme J2EE définit deux types de composants web : La plate-forme J2EE définit deux types de composants web :

les servlets et les servlets et les JavaServer Pages (JSP). les JavaServer Pages (JSP).

La section suivante donne un aperçu de ces composants qui sont détaillés La section suivante donne un aperçu de ces composants qui sont détaillés ultérieurement.ultérieurement.

Page 29: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Servlets (1/3)Servlets (1/3) Une servlet est un composant qui étend les fonctionnalités d'un serveur Une servlet est un composant qui étend les fonctionnalités d'un serveur

web de manière portable et efficace.web de manière portable et efficace.

Un serveur web héberge des classes Java servlets qui sont exécutées Un serveur web héberge des classes Java servlets qui sont exécutées à l'intérieur du container web. Le serveur web associe un e ou plusieurs à l'intérieur du container web. Le serveur web associe un e ou plusieurs URLs à chaque servlet et lorsque ces URLs sont appelées via une URLs à chaque servlet et lorsque ces URLs sont appelées via une requête HTTP de l'utilisateur la servlet est déclenchée.requête HTTP de l'utilisateur la servlet est déclenchée.

Quand la servlet reçoit une requête du client, elle génère une réponse, Quand la servlet reçoit une requête du client, elle génère une réponse, éventuellement en utilisant la logique métier contenue dans des EJBs éventuellement en utilisant la logique métier contenue dans des EJBs ou en interrogeant directement une base de données. Elle retourne ou en interrogeant directement une base de données. Elle retourne alors une réponse HTML ou XML au demandeur.alors une réponse HTML ou XML au demandeur.

Page 30: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Servlets (2/3)Servlets (2/3) Un développeur de servlet utilise l'API servlet pour :Un développeur de servlet utilise l'API servlet pour :

Initialiser et finaliser la servletInitialiser et finaliser la servlet Accéder à l'environnement de la servletAccéder à l'environnement de la servlet Recevoir ou rediriger les requêtes et envoyer les réponsesRecevoir ou rediriger les requêtes et envoyer les réponses Interagir avec d'autres servlets ou composantsInteragir avec d'autres servlets ou composants Maintenir les informations de sessions du clientMaintenir les informations de sessions du client Filtrer avant ou après traitement les requêtes et les réponsesFiltrer avant ou après traitement les requêtes et les réponses Implémenter la sécurité sur le tiers webImplémenter la sécurité sur le tiers web

Page 31: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Servlets (3/3)Servlets (3/3) Les servlets sont des classes Java exécutées par le serveur web en Les servlets sont des classes Java exécutées par le serveur web en

réponse à une requête du client (en utilisant le protocole http).réponse à une requête du client (en utilisant le protocole http). Les servlets sont définies dans les packages suivants:Les servlets sont définies dans les packages suivants:

javax.servlet, contient les classes génériques (indépendantes du protocole) javax.servlet, contient les classes génériques (indépendantes du protocole) des servlets. La classe HTTPServlet utilise la classe ServletException de des servlets. La classe HTTPServlet utilise la classe ServletException de ce package pour indiquer un problème de servlet.ce package pour indiquer un problème de servlet.

javax.servlet.http, contient la classe de serlvet concue pour le protocole javax.servlet.http, contient la classe de serlvet concue pour le protocole HTTP (classe HttpServlet).HTTP (classe HttpServlet).

En général les servlets utilisent aussi le package java.io pour les En général les servlets utilisent aussi le package java.io pour les entrées/sorties système. entrées/sorties système.

La classe HttpServlet utilise la classe IOException de ce package pour La classe HttpServlet utilise la classe IOException de ce package pour signaler les erreurs d'entrée-sortie.signaler les erreurs d'entrée-sortie.

Page 32: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

JavaServer Pages (1/3)JavaServer Pages (1/3) La technologie JavaServer Pages (JSP) fournit un moyen simple et La technologie JavaServer Pages (JSP) fournit un moyen simple et

extensible pour générer du contenu dynamique pour le client web. extensible pour générer du contenu dynamique pour le client web.

Une page JSP est un document texte qui décrit comment traiter la Une page JSP est un document texte qui décrit comment traiter la requête d'un client et comment créer une réponse.requête d'un client et comment créer une réponse.

Page 33: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

JavaServer Pages (2/3)JavaServer Pages (2/3) Une page JSP contient :Une page JSP contient :

Des informations de formatage (modèle) du document web, habituellement Des informations de formatage (modèle) du document web, habituellement en HTML ou XML. en HTML ou XML.

Les concepteurs web peuvent modifier cette partie de la page sans affecter les Les concepteurs web peuvent modifier cette partie de la page sans affecter les parties dynamiques. Cette approche permet de séparer la présentation du parties dynamiques. Cette approche permet de séparer la présentation du contenu dynamique.contenu dynamique.

Des éléments JSP et de script pour générer le contenu dynamique du Des éléments JSP et de script pour générer le contenu dynamique du document Web. document Web.

La plupart des pages JSP utilisent aussi des JavaBeans et/ou des Enterprise La plupart des pages JSP utilisent aussi des JavaBeans et/ou des Enterprise JavaBeans pour réaliser les opérations complexes de l'application. Les JSP JavaBeans pour réaliser les opérations complexes de l'application. Les JSP permettent en standard d'instancier des beans, de modifier ou lire leurs attributs permettent en standard d'instancier des beans, de modifier ou lire leurs attributs et de télécharger des applets. et de télécharger des applets.

La technologie JSP est extensible en utilisant des balises personnalisées La technologie JSP est extensible en utilisant des balises personnalisées qui peuvent être encapsulées dans des bibliothèques de balises qui peuvent être encapsulées dans des bibliothèques de balises personnalisées (taglibs)personnalisées (taglibs)

Page 34: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Java Server Pages (3/3)Java Server Pages (3/3) La technologie JavaServer Page (JSP) permet de mettre des fragments de code java La technologie JavaServer Page (JSP) permet de mettre des fragments de code java

dans une page HTML statique. dans une page HTML statique.

Lorsque la page JSP est chargée par un navigateur web, le code java est exécuté sur le Lorsque la page JSP est chargée par un navigateur web, le code java est exécuté sur le serveur. Celui-ci crée une servlet correspondante, qui est ensuite compilée et exécutée serveur. Celui-ci crée une servlet correspondante, qui est ensuite compilée et exécutée en tâche de fond.en tâche de fond.

La servlet retourne une page HTML ou un rapport en XML qui peut alors être transmis La servlet retourne une page HTML ou un rapport en XML qui peut alors être transmis au client ou subir d’autres traitements.au client ou subir d’autres traitements.

Les JSP sont définies dans une classe d'implémentation appelée le package.Les JSP sont définies dans une classe d'implémentation appelée le package.

Une page JSP est un document texte qui décrit comment créer un objet réponse Une page JSP est un document texte qui décrit comment créer un objet réponse (response) à partir d’un objet requête (request) pour un protocole donné. (response) à partir d’un objet requête (request) pour un protocole donné.

Le traitement d’une page JSP peut entraîner la création et/ou l’utilisation d’autres objets.Le traitement d’une page JSP peut entraîner la création et/ou l’utilisation d’autres objets.

Le protocole HTTP est le protocole utilisé par défaut. Le protocole HTTP est le protocole utilisé par défaut.

Page 35: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Conteneur deConteneur decomposants webcomposants web

Les composants web sont hébergés dans des conteneurs de servlets, Les composants web sont hébergés dans des conteneurs de servlets, conteneurs de JSP et conteneurs web.conteneurs de JSP et conteneurs web.

En sus des fonctionnalités normales d'un conteneur de composants, un En sus des fonctionnalités normales d'un conteneur de composants, un conteneur de servlets (servlets container) fournit les services réseaux conteneur de servlets (servlets container) fournit les services réseaux par lesquels les requêtes et réponses sont émises. par lesquels les requêtes et réponses sont émises.

Il décode également les requêtes et formate les réponses dans le Il décode également les requêtes et formate les réponses dans le format approprié. format approprié.

Tous les conteneurs de servlets doivent supporter le protocole HTTP et Tous les conteneurs de servlets doivent supporter le protocole HTTP et peuvent aussi supporter le protocole HTTPS. peuvent aussi supporter le protocole HTTPS.

Un conteneur de JSP (JSP container) fournit les mêmes services qu'un Un conteneur de JSP (JSP container) fournit les mêmes services qu'un conteneur de servlets.conteneur de servlets.

Ces conteneurs sont généralement appelés conteneurs web (Web Ces conteneurs sont généralement appelés conteneurs web (Web containers).containers).

Page 36: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Enterprise Java Beans Enterprise Java Beans (1/5)(1/5)

Le terme Enterprise Java Bean recouvre deux notions:Le terme Enterprise Java Bean recouvre deux notions: c’est le nom générique d’une architecture permettant la programmation répartie en c’est le nom générique d’une architecture permettant la programmation répartie en

JavaJava c’est le nom de composants exécutés sur un serveur et appelés par un client distantc’est le nom de composants exécutés sur un serveur et appelés par un client distant

Les EJBs n’ont en commun que le nom avec les Java Beans traditionnels, qui Les EJBs n’ont en commun que le nom avec les Java Beans traditionnels, qui sont des composants côté clients utilisés pour obtenir une meilleurs séparation sont des composants côté clients utilisés pour obtenir une meilleurs séparation suivant le modèle MVC ( model – view – controller). suivant le modèle MVC ( model – view – controller).

Les Enterprise Java Beans ont pour but de rendre les applications faciles à Les Enterprise Java Beans ont pour but de rendre les applications faciles à développer, à déployer et à administrer. développer, à déployer et à administrer.

Les EJBs sont indépendants de la plate-forme d’exécution, étant écrits en Java: Les EJBs sont indépendants de la plate-forme d’exécution, étant écrits en Java: le déploiement d’un EJB se fait sans recompilation ni modification du code-le déploiement d’un EJB se fait sans recompilation ni modification du code-source.source.

Les spécifications EJB définissent une architecture pour la construction Les spécifications EJB définissent une architecture pour la construction d’applications Java dont la partie serveur est construite à partir de composants d’applications Java dont la partie serveur est construite à partir de composants Enterprise Beans.Enterprise Beans.

Page 37: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Enterprise Java Beans Enterprise Java Beans (2/5)(2/5)

Leurs caractéristiques principales sont les suivantes:Leurs caractéristiques principales sont les suivantes: les composants EB sont “écrits une fois, exécutable partout” (write once, les composants EB sont “écrits une fois, exécutable partout” (write once,

run anywhere) run anywhere) ces composants sont des composants côtés serveur (analogues aux objets ces composants sont des composants côtés serveur (analogues aux objets

métiers de CORBA)métiers de CORBA) Les EJBs ne sont pas les seuls composants exploités dans une Les EJBs ne sont pas les seuls composants exploités dans une

application J2EE mais ils en sont la partie centrale.application J2EE mais ils en sont la partie centrale. Les EJBs résident sur le serveur d'EJB. Les EJBs résident sur le serveur d'EJB. Leurs méthodes sont accessibles aux clients (tiers web, application Leurs méthodes sont accessibles aux clients (tiers web, application

autonome) en utilisant l'interface distante home du beans. autonome) en utilisant l'interface distante home du beans. Cette interface décrit les méthodes du bean (paramètres…) et permet Cette interface décrit les méthodes du bean (paramètres…) et permet

au client de les appeler. au client de les appeler. Lorsqu'une méthode est déclenchée, l'appel est enveloppé dans un Lorsqu'une méthode est déclenchée, l'appel est enveloppé dans un

message RMI transmis au serveur d'EJB, qui exécute alors la méthode message RMI transmis au serveur d'EJB, qui exécute alors la méthode de l'ÉB et retourne le résultat au client dans un autre message RMI.de l'ÉB et retourne le résultat au client dans un autre message RMI.

Page 38: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Enterprise JavaBeans (3/5)Enterprise JavaBeans (3/5) L'architecture Enterprise JavaBeans est une technologie côté serveur L'architecture Enterprise JavaBeans est une technologie côté serveur

pour développer et déployer des composants contenant la logique pour développer et déployer des composants contenant la logique métier d'une application d'entreprise.métier d'une application d'entreprise.

Les composants Enterprise JavaBeans, aussi appelé Enterprise Beans, Les composants Enterprise JavaBeans, aussi appelé Enterprise Beans, sont scalables, transactionnel et supporte l'accès concurrent.sont scalables, transactionnel et supporte l'accès concurrent.

Page 39: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Enterprise JavaBeans (4/5)Enterprise JavaBeans (4/5) Il y a 3 types d'entreprise beans : les beans de sessions, d'entité et de Il y a 3 types d'entreprise beans : les beans de sessions, d'entité et de

messages. messages.

Les beans de session et d'entité comportent 2 interfaces :Les beans de session et d'entité comportent 2 interfaces : une interface de composant : l'interface de composant définit les méthodes une interface de composant : l'interface de composant définit les méthodes

métiers du bean,métiers du bean, une interface home : l'interface home définit les méthodes pour créer, une interface home : l'interface home définit les méthodes pour créer,

trouver, supprimer et accéder aux méta-données d'un bean.trouver, supprimer et accéder aux méta-données d'un bean.

Les beans à message n'ont pas d'interfaces home et composant.Les beans à message n'ont pas d'interfaces home et composant.

Les interfaces composant et home d'un bean sont locales ou distantes.Les interfaces composant et home d'un bean sont locales ou distantes.

Page 40: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Enterprise JavaBeans (5/5)Enterprise JavaBeans (5/5) Les interfaces distantes (remote interface) sont des interfaces RMI qui Les interfaces distantes (remote interface) sont des interfaces RMI qui

permettent au client du bean d'être situé n'importe où. permettent au client du bean d'être situé n'importe où. Dans ce cas les arguments et valeurs de retour communiquées entre le client et Dans ce cas les arguments et valeurs de retour communiquées entre le client et

le beans distant sont sérialisées pour être transportées sur le réseau, ce qui le beans distant sont sérialisées pour être transportées sur le réseau, ce qui consomme des ressources.consomme des ressources.

Les interfaces locales impliquent que les clients du beans soient Les interfaces locales impliquent que les clients du beans soient localisés dans la même machine virtuelle que le beans. localisés dans la même machine virtuelle que le beans.

Dans ce cas les arguments et valeurs de retours échangés sont transmis par Dans ce cas les arguments et valeurs de retours échangés sont transmis par référence. Cette méthode est plus performante que la méthode distante.référence. Cette méthode est plus performante que la méthode distante.

La section suivante donne un aperçu des composants EJB. Ils sont La section suivante donne un aperçu des composants EJB. Ils sont décrits en détail dans la suite du document.décrits en détail dans la suite du document.

Page 41: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Beans de session Beans de session (session beans)(session beans)

Un bean de session fournit un service au client et habituellement n'existe que le Un bean de session fournit un service au client et habituellement n'existe que le temps d'une session cliente. temps d'une session cliente.

Un bean de session accompli des opérations de calcul ou d'accès à une base Un bean de session accompli des opérations de calcul ou d'accès à une base de données pour le client. de données pour le client.

Bien qu'un bean de session puisse être transactionnel, il ne dispose pas de Bien qu'un bean de session puisse être transactionnel, il ne dispose pas de mécanismes de reprise sur erreur en cas de plantage du serveur.mécanismes de reprise sur erreur en cas de plantage du serveur.

Les bean de session peuvent être sans état (stateless) ou peuvent maintenir Les bean de session peuvent être sans état (stateless) ou peuvent maintenir des informations d'état entre les appels de méthode et les transactions des informations d'état entre les appels de méthode et les transactions (statefull).(statefull).

Si le beans maintient des informations d'état, c'est au container d'EJB de Si le beans maintient des informations d'état, c'est au container d'EJB de garder ces informations lorsque le bean est déchargé de la mémoire du garder ces informations lorsque le bean est déchargé de la mémoire du serveur. Cependant c'est au bean lui-même de gérer la persistance des serveur. Cependant c'est au bean lui-même de gérer la persistance des données s'il y a lieu.données s'il y a lieu.

Page 42: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Beans d'entité Beans d'entité (entity beans)(entity beans)

Un bean d'entité est un objet persistant qui représente des données stockées Un bean d'entité est un objet persistant qui représente des données stockées dans un entrepôt de données.dans un entrepôt de données.

Un bean d'entité est identifié par sa clé primaire (primary key).Un bean d'entité est identifié par sa clé primaire (primary key).

Un bean d'entité peut assurer lui-même la persistance de ses données ou la Un bean d'entité peut assurer lui-même la persistance de ses données ou la déléguer au conteneur d'EJB. déléguer au conteneur d'EJB.

Les beans dont la persistance est gérée par le conteneur sont plus portables et Les beans dont la persistance est gérée par le conteneur sont plus portables et peuvent maintenir des relations entre eux. Cette fonction permet de joindre peuvent maintenir des relations entre eux. Cette fonction permet de joindre plusieurs tables de bases de données.plusieurs tables de bases de données.

Si le bean gère lui-même sa persistance, alors le programmeur devra sûrement Si le bean gère lui-même sa persistance, alors le programmeur devra sûrement changer une partie du code SQL en changeant de base de données.changer une partie du code SQL en changeant de base de données.

Page 43: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Bean à message Bean à message (message-driven beans)(message-driven beans)

Un bean à message permet à un client asynchrone d'accéder à la logique métier Un bean à message permet à un client asynchrone d'accéder à la logique métier d'un tiers EJB.d'un tiers EJB.

Un bean à message permet à des clients asynchrones d'accéder à la logique Un bean à message permet à des clients asynchrones d'accéder à la logique métier du tiers EJB. Les beans à messages sont activés uniquement par des métier du tiers EJB. Les beans à messages sont activés uniquement par des messages recus d'une file de message JMS qu'ils écoutent.messages recus d'une file de message JMS qu'ils écoutent.

Les clients n'accèdent pas directement au bean à message mais envoient un Les clients n'accèdent pas directement au bean à message mais envoient un message à la file JMS.message à la file JMS.

Comme les beans à messages n'ont pas besoin d'exposer leurs méthodes à un Comme les beans à messages n'ont pas besoin d'exposer leurs méthodes à un client ils n'implémentent pas les interfaces composant ou home.client ils n'implémentent pas les interfaces composant ou home.

Ils ne maintiennent pas non plus d'information d'état sur le client.Ils ne maintiennent pas non plus d'information d'état sur le client.

Page 44: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Conteneur d'EJB Conteneur d'EJB (EJB Component (EJB Component Containers)Containers)

Les Enterprise beans sont hébergés dans des conteneurs d'EJB (EJB Les Enterprise beans sont hébergés dans des conteneurs d'EJB (EJB container). container).

En plus des services traditionnels d'un conteneur, un conteneur EJB fournit auw En plus des services traditionnels d'un conteneur, un conteneur EJB fournit auw beans qu’il héberge des services de :beans qu’il héberge des services de :

Transaction,Transaction, Persistance,Persistance, Accès aux services J2EE et aux APIs de communicationAccès aux services J2EE et aux APIs de communication

Page 45: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Technologies J2EE (1/4)Technologies J2EE (1/4) La plate-forme J2EE comme la plate-forme J2SE incluent un grand La plate-forme J2EE comme la plate-forme J2SE incluent un grand

nombre de bibliothèques de code (API) prédéfinies pour les fonctions nombre de bibliothèques de code (API) prédéfinies pour les fonctions de base d'une application.de base d'une application.

Les conteneurs fournissent aux composants un accès aux APIs du Les conteneurs fournissent aux composants un accès aux APIs du J2SE, ce qui inclut l'accès aux APIs Java IDL et JDBC 2.0 core.J2SE, ce qui inclut l'accès aux APIs Java IDL et JDBC 2.0 core.

Le tableau suivant résume les APIs accessibles en fonction du type de Le tableau suivant résume les APIs accessibles en fonction du type de conteneur.conteneur.

Page 46: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Technologies J2EE (2/4)Technologies J2EE (2/4)

API AppletApplication Client

Web EJB

JDBC 2.0 Extension N Y Y Y

JTA 1.0 N N Y Y

JNDI 1.2 N Y Y Y

Servlet 2.3 N N Y N

JSP 1.2 N N Y N

EJB 2.0 N Y1 Y2 Y

RMI-IIOP 1.0 N Y Y Y

JMS 1.0 N Y Y Y

JavaMail 1.2 N N Y Y

JAF 1.0 N N Y Y

JAXP 1.1 N Y Y Y

JAAS 1.0 N Y Y Y

Connector 1.0 N N Y Y

Page 47: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Technologies J2EE (3/4)Technologies J2EE (3/4)

Page 48: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Technologies J2EE (4/4)Technologies J2EE (4/4) L'architecture L'architecture J2EE ConnectorJ2EE Connector (JCA)(JCA) est l'infrastructure pour interagir avec une est l'infrastructure pour interagir avec une

grande variété de systèmes d'information d'entreprise tels que des ERPs, des CRM, grande variété de systèmes d'information d'entreprise tels que des ERPs, des CRM, et autres progiciels.et autres progiciels.

L'API L'API Java Database Connectivity (JDBC)Java Database Connectivity (JDBC) est utilisée pour accéder à des données est utilisée pour accéder à des données relationnelles à partir de programmes Javarelationnelles à partir de programmes Java

La Java La Java Transaction API (JTA)Transaction API (JTA) est utilisée pour gérer et coordonner les transactions est utilisée pour gérer et coordonner les transactions entre un ensemble hétérogène de systèmes d'information d'entreprise.entre un ensemble hétérogène de systèmes d'information d'entreprise.

L'API L'API Java Naming and Directory Interface (JNDI)Java Naming and Directory Interface (JNDI) est utilisée pour accéder aux est utilisée pour accéder aux services de nommage et d'annuaire de l'entreprise.services de nommage et d'annuaire de l'entreprise.

L'API L'API Java Message Service (JMS)Java Message Service (JMS) est utilisée pour émettre et recevoir des est utilisée pour émettre et recevoir des messages via les systèmes de messagerie d'entreprise comme IBM MQ Series ou messages via les systèmes de messagerie d'entreprise comme IBM MQ Series ou TIBCO Rendezvous. Dans l'architecture J2EE les Message Driven Beans fournissent TIBCO Rendezvous. Dans l'architecture J2EE les Message Driven Beans fournissent une approche à base de composant pour encapsuler les fonctionnalités de une approche à base de composant pour encapsuler les fonctionnalités de messagerie d’entreprise.messagerie d’entreprise.

La La JavaMail APIJavaMail API est utilisée pour émettre et recevoir des mails. est utilisée pour émettre et recevoir des mails. Java IDLJava IDL est utilisée pour appeler des services CORBA est utilisée pour appeler des services CORBA L'API L'API Java pour XML (JAXP)Java pour XML (JAXP) est utilisée pour l'intégration avec les systèmes et est utilisée pour l'intégration avec les systèmes et

applications existants et pour implémenter les web services dans la plate-forme J2EE.applications existants et pour implémenter les web services dans la plate-forme J2EE. JAX-RPCJAX-RPC est utilisé pour les services web est utilisé pour les services web

Page 49: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Remote Method Interface Remote Method Interface (RMI)(RMI)

Interface pour les méthodes distantes. Interface pour les méthodes distantes.

Le package java correspondant est javax.rmi. Le package java correspondant est javax.rmi.

Le principe de RMI est de rendre possible l’accès aux méthodes d’un Le principe de RMI est de rendre possible l’accès aux méthodes d’un objet distant en établissant une connexion réseau (socket) entre le objet distant en établissant une connexion réseau (socket) entre le client et le serveur où sont stockés les objets.client et le serveur où sont stockés les objets.

Le client connaît les méthodes de l’objet distant au moyen des classes Le client connaît les méthodes de l’objet distant au moyen des classes stubs qui contiennent les signatures des méthodes distantes.stubs qui contiennent les signatures des méthodes distantes.

Les classes javax.rmi sont utilisées pour chercher l'interface home d'un Les classes javax.rmi sont utilisées pour chercher l'interface home d'un beans de session et l'activer sur le serveur distant.beans de session et l'activer sur le serveur distant.

Page 50: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

JavaBeansJavaBeans Il est possible d’utiliser la technologie JavaBeans (package Beans.*) Il est possible d’utiliser la technologie JavaBeans (package Beans.*)

entre une page JSP et un bean pour obtenir une meilleure séparation entre une page JSP et un bean pour obtenir une meilleure séparation entre Modèle, Vue et Contrôleur (Model View Controller – MVC). entre Modèle, Vue et Contrôleur (Model View Controller – MVC).

Page 51: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

MVCMVC Le modèle MVC est un patron de conception (design pattern) qui Le modèle MVC est un patron de conception (design pattern) qui

consiste en 3 types d’objets:consiste en 3 types d’objets: le Modèle procure la logique métier de l’application, le Modèle procure la logique métier de l’application, la Vue est la présentation de l’application,la Vue est la présentation de l’application, le Contrôleur est un objet qui gère les interactions entre l’utilisateur et la le Contrôleur est un objet qui gère les interactions entre l’utilisateur et la

Vue.Vue.

Un patron de conception décrit un problème récurrent et ses solutions, Un patron de conception décrit un problème récurrent et ses solutions, les solutions ne sont jamais exactement les mêmes pour chaque les solutions ne sont jamais exactement les mêmes pour chaque occurrence du problème mais le patron de conception donne une occurrence du problème mais le patron de conception donne une solution générale au problème qu’il suffit d’adapter .solution générale au problème qu’il suffit d’adapter .

Page 52: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Java Naming and Directory Java Naming and Directory Interface (JNDI)Interface (JNDI)

La technologie JNDI est utilisée dans J2EE pour localiser les objets sur un serveur La technologie JNDI est utilisée dans J2EE pour localiser les objets sur un serveur et accéder aux objets externes à partir des composants J2EE.et accéder aux objets externes à partir des composants J2EE.

Chaque conteneur stocke une référence aux objets qu’il peut créer et instancie ces Chaque conteneur stocke une référence aux objets qu’il peut créer et instancie ces objets à la demande des clients ou des applications qui fonctionnent sur le serveur. objets à la demande des clients ou des applications qui fonctionnent sur le serveur.

Le conteneur met aussi à la disposition des composants un jeu de ressources JNDI Le conteneur met aussi à la disposition des composants un jeu de ressources JNDI initial, issu de la configuration du serveur et/ou des applications web (via les initial, issu de la configuration du serveur et/ou des applications web (via les descripteurs de déploiement).descripteurs de déploiement).

Un objet InitialContext est crée par le conteneur lorsqu'une web application est Un objet InitialContext est crée par le conteneur lorsqu'une web application est déployée. Cet objet est accessible par les composants, en lecture seulement. déployée. Cet objet est accessible par les composants, en lecture seulement.

L'API JNDI est définie dans le package javax.naming. L'API JNDI est définie dans le package javax.naming.

L'autre rôle de JNDI dans une application J2EE est la localisation des interfaces L'autre rôle de JNDI dans une application J2EE est la localisation des interfaces distantes des beans.distantes des beans.

Page 53: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Exemple d’utilisation de Exemple d’utilisation de JNDIJNDI

Dans Tomcat, les ressources JDNI initiales sont accessibles dans Dans Tomcat, les ressources JDNI initiales sont accessibles dans l'espace de nommage java:comp/env. l'espace de nommage java:comp/env.

Exemple d'accès à une ressource JDBC par JNDI :Exemple d'accès à une ressource JDBC par JNDI :

// Obtain our environment naming context// Obtain our environment naming contextContext initCtx = new InitialContext();Context initCtx = new InitialContext();Context envCtx = (Context) initCtx.lookup("java:comp/env");Context envCtx = (Context) initCtx.lookup("java:comp/env");// Look up our data source// Look up our data source

DataSource ds = (DataSource)DataSource ds = (DataSource)

envCtx.lookup("jdbc/EmployeeDB");envCtx.lookup("jdbc/EmployeeDB");

// Allocate and use a connection from the pool// Allocate and use a connection from the pool

Connection conn = ds.getConnection();Connection conn = ds.getConnection();

... use this connection to access the database ...... use this connection to access the database ...

conn.close();conn.close();

Page 54: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Java DataBase Java DataBase Connectivity (JDBC)Connectivity (JDBC)

Cette API est développée par Sun en collaboration avec les grands éditeurs de SGBD.Cette API est développée par Sun en collaboration avec les grands éditeurs de SGBD. Elle supporte plus de 50 drivers, permettant de se connecter aux bases de 40 éditeurs Elle supporte plus de 50 drivers, permettant de se connecter aux bases de 40 éditeurs

parmis lesquels Oracle, Informix, Postgres, Ingres, Sybase ...parmis lesquels Oracle, Informix, Postgres, Ingres, Sybase ... JDBC supporte le SQL 2 ANSI pour l’écriture des requêtes plus des extensions JDBC supporte le SQL 2 ANSI pour l’écriture des requêtes plus des extensions

spécifiques à chaque base de données.spécifiques à chaque base de données. Les tâches assurées par JDBC sont:Les tâches assurées par JDBC sont:

Gestion des connexions et transactionsGestion des connexions et transactions Préparation de requêtes SQLPréparation de requêtes SQL Accès aisé aux résultatsAccès aisé aux résultats

JDBC est une architecture “bas niveau”, qui est utilisée dans les applications J2EE pour JDBC est une architecture “bas niveau”, qui est utilisée dans les applications J2EE pour assurer les fonctions de persistance des données. assurer les fonctions de persistance des données.

L’utilisation de JDBC est faite soit par le conteneur d’application (Container Managed L’utilisation de JDBC est faite soit par le conteneur d’application (Container Managed Persistence) soit directement dans le beans (Bean Managed Persistence).Persistence) soit directement dans le beans (Bean Managed Persistence).

L’utilisation typique de JDBC dans une classe java est la suivante:L’utilisation typique de JDBC dans une classe java est la suivante: Chargement du driverChargement du driver Connection à la base (classe Connection)Connection à la base (classe Connection) Expression d’une requête (classes Statement et PreparedStatement)Expression d’une requête (classes Statement et PreparedStatement) Analyse du résultat (classe ResultSet)Analyse du résultat (classe ResultSet)

Page 55: L’architecture J2EE ludovic.maitre@free.fr. Plan (1/3) Principes de J2EE Principes de J2EE Composants, conteneurs et services Composants, conteneurs et.

Exemple de connection Exemple de connection JDBCJDBC

String url = “jdbc:postgresql://murphy/towns”String url = “jdbc:postgresql://murphy/towns”

Connection c = DriverManager. getConnection( url);Connection c = DriverManager. getConnection( url);

Statement s = c. createStatement();Statement s = c. createStatement();

ResultSet r = s. executeQuery(“ SELECT * FROM VILLES”);ResultSet r = s. executeQuery(“ SELECT * FROM VILLES”);

while (r. next())while (r. next())

{{

int i = r. getInt(" Population");int i = r. getInt(" Population");

String s = r. getString(" Ville");String s = r. getString(" Ville");

System. out. println(“ Ville “+ s+” a “+ i+” hab.”);System. out. println(“ Ville “+ s+” a “+ i+” hab.”);

............

}}