Vous êtes sur la page 1sur 6

Cours Java EE

 21 h de cours et TD/TP
Site du cours :
Java EE – Introduction

http://richard.grin.free.fr/itu-madagascar
 Interrogation sans documents à la fin du cours, sur
les concepts et savoir-faire essentiels (30 %)
ITU - Université de Nice Sophia Antipolis
 Projet à rendre fin avril 2016 (70 %)
Richard Grin
Version O 1.5 – 5/1/16

Richard Grin Présentation Java EE page 2

Informations diverses Prérequis / Objectifs


 Installer NetBeans 8.1, version Java EE (ou
« All ») sur ordinateur personnel  Prérequis :
HTML, HTTP
 Utilisation ordinateur personnel pendant TPs ?

 Bonne connaissance de Java


 Servlets (les bases)
 Bases de données relationnelles (transactions et accès
concurrents en particulier)
 Objectif :
Développement d’applications Web avec Java EE,
en particulier avec JSF, JPA et les EJB

Richard Grin Présentation Java EE page 3 Richard Grin Présentation Java EE page 4

Plan du cours Plan de ce support


 TP 1 jusqu’à « Création d’un EJB session stateless » (test
environnement de travail avant le début du cours)  Présentation de Java EE
Introduction à Java EE (ce support)

 Composants
 EJB – Introduction à CDI
 Serveur d’application et containers
 Suite et fin du TP 1 (survol de JSF, EJB, JPA)
 JSF  Formats de distribution

 TP 2 (JSF et modèle PRG)  Profiles


 TP 3 (templates de JSF)  JNDI
 JPA 1ère partie (bases)
 TP 4 (JPA)
 JPA 2ème partie (associations et compléments)
 TP 5 (associations avec JPA)
Richard Grin Présentation Java EE page 5 Richard Grin Présentation Java EE page 6

1
Architecture d’une Couches d’une application Java EE
application d’entreprise
Sécurité, DAO, ORM,…
 Les applications d’entreprise modernes sont des transactionnel,…
applications multi-tiers
Souvent Web
et mobile

Les « vrais »
traitements

Richard Grin Présentation Java EE page 7 Richard Grin Présentation Java EE page 8

Java EE Autre solution Java EE


 Pas un produit ; spécifications (32 dans Java EE 7)  Serveur RESTful (JAX-RS si Java) et interface
pour écrire des applications d’entreprise en Java utilisateur HTML5 – JavaScript
 Les composants métier sont des Entreprise Java
Beans (EJB)
 Nous étudierons une interface utilisateur de type
Web, implémentée avec Java Server Faces (JSF)
 La couche d’accès aux données utilisera Java
Persistence API (JPA)

Richard Grin Présentation Java EE page 9 Richard Grin Présentation Java EE page 10

Composant Intérêt des composants


 Java EE utilise la notion de composant, en  Développement plus rapide, plus fiable
particulier pour les EJB et les composants JSF
 Maintenance facilitée
 Sur le modèle des composants électroniques, les
 Pas besoin de compétences pointues dans le
composants logiciels sont des boîtes noires
domaine métier d’un composant acquis
 réutilisables
 Industrie du composant logiciel ? Pas encore
 configurables
vraiment là
 qui respectent des interfaces définies par une
spécification
 qui peuvent être enfichés dans les applications
qui respectent ces spécifications
Richard Grin Présentation Java EE page 11 Richard Grin Présentation Java EE page 12

2
Exemples Serveur d’application
 Composant « métier » pour gérer la paie des  Logiciel qui sert de structure d’accueil pour les
employés applications ; il leur fournit des services non
 Composant JSF qui affiche une carte « Google fonctionnels
Map » dans l’interface utilisateur Web  Les applications Java EE ne peuvent fonctionner
que si elles sont intégrées avec un serveur
d’application qui suit les spécifications Java EE
 Plusieurs serveurs d’application Java EE (Payara,
WildFly,…)
 GlassFish 4 est l’implémentation de référence de
Java EE 7
Richard Grin Présentation Java EE page 13 Richard Grin Présentation Java EE page 14

Containers Exemple d’interception


 Chaque type de composant Java EE est géré par un  L’appel d’une méthode d’un EJB est intercepté par
container qui fait partie du serveur d’application : pour le container EJB qui
JSF, EJB, CDI, etc.  démarre une nouvelle transaction, juste avant de
 Un container intercepte les appels aux composants donner la main à la méthode
pour ajouter des services non fonctionnels :  lance un commit de la transaction à la fin de
transactions, gestion de la concurrence, cycle de vie l’exécution de la méthode
des composants, injection de dépendance,…
 Le développeur est ainsi libéré d’une grande charge
de travail !

Richard Grin Présentation Java EE page 15 Richard Grin Présentation Java EE page 16

Configuration d’une application Format de distribution


 Pour  Une application Java EE est distribuée dans un
 s’adapter à la plateforme de déploiement (politique de fichier d’archive (de type fichier jar)
sécurité, bases de données installées,…)  Un fichier d’archive peut contenir
faire un choix entre plusieurs possibilités (persistance
 des classes Java (simples classes, composants)

des attributs d’un objet, gestion des transactions,…)
 des ressources utilisées par le code Java
 Java EE suit la formule « convention plutôt que
configuration » : les pratiques les plus courantes (images, son, fichiers pour internationalisation,…)
n’ont pas besoin d’être configurées ; seules les  des fichiers XML qui décrivent l’application ou la

pratiques inhabituelles doivent être configurées façon de la déployer


 Configuration par fichiers XML ou annotations  d’autres fichiers d’archive

Richard Grin Présentation Java EE page 17 Richard Grin Présentation Java EE page 18

3
Fichier descripteur de déploiement Annotations et fichiers descripteurs XML
 Informe le serveur d’application sur la manière de  De nombreuses annotations permettent de
déployer une application configurer une application directement dans les
 Par exemple pour intégrer l’application au système de classes Java
sécurité utilisé par le serveur  Le contenu des fichiers XML est ainsi allégé
 Java EE définit des fichiers descripteurs standards ;  S’il y a conflit sur une indication, c’est le fichier
web.xml pour les applications Web XML qui l’emporte Pourquoi ?
 Un serveur d’application peut y ajouter ses propres
fichiers pour des configurations non standardisées
(source de données, clustering,…) ; par exemple
glassfish-web.xml pour GlassFish
Richard Grin Présentation Java EE page 19 Richard Grin Présentation Java EE page 20

Types de fichiers d’archive Structure EAR


 Jar (Java ARchive) : contient les EJB, les classes
Java ordinaires et les ressources associées
 War (Web ARchive) : pour les modules liés au
Web ; contient les servlets, fichiers HTML, JSF,
EJB, et les ressources associées
 Ear (Entreprise ARchive) : réunit des modules jar
ou war

Richard Grin Présentation Java EE page 21 Richard Grin Présentation Java EE page 22

Structure JAR pour EJB Structure WAR


Protégé des
clients Web

classes
directement
sous la racine

Richard Grin Présentation Java EE page 23 Richard Grin Présentation Java EE page 24

4
Profile
 Pour permettre des serveurs d’application allégés,
Java EE définit des profiles qui n’utilisent pas
toutes les technologies de la norme
Profiles  Le profile Web inclut les technologies pour écrire
une application Web : servlets, JSF, CDI, EJB Lite,
JPA, JTA, validation bean
 Une application qui se limite au profile Web peut
être distribuée dans un seul fichier WAR

Richard Grin Présentation Java EE page 25 Richard Grin Présentation Java EE page 26

EJB Lite
 Une partie de la spécification EJB :
 beans stateless, stateful et singleton (donc pas

EJB message, MDB) JNDI


 interfaces locales (pas d’interfaces distantes) Java Naming and Directory Interface

Richard Grin Présentation Java EE page 27 Richard Grin Présentation Java EE page 28

Généralités Noms JNDI des EJB


 Les composants ont besoin d’accéder à d’autres
 Noms JNDI des EJB standardisés
composants ou à des ressources (EJB, source de
données JDBC, ressource javaMail,…)  java:global/app1/ejb1/Bean1
 JNDI, API Java pour utiliser des annuaires pour application module nom de l’EJB
donner des noms à des objets, des services ou (fichier
des ressources ejb1.jar)

 Exemples de noms :  java:app/ejb1/Bean1


java:global/drh/drh-ejb/EmployeManager pour référence
java:app/jdbc/employes
 java:module/Bean1 à l’intérieur d’une application

Richard Grin Présentation Java EE page 29 Richard Grin Présentation Java EE page 30

5
Utilisation de JNDI Code pour récupérer un EJB avec JNDI
import javax.naming.InitialContext;
 En interne par le serveur d’application ...
 Le développeur utilisera le plus souvent l’injection try {
de dépendance qui est plus simple à utiliser InitialContext ic = new InitialContext();
MonEJB monEJB = (MonEJB)
 L’injection de dépendance n’est pas toujours
ic.lookup("java:global/app/mod/MonEJB");
possible et il faut alors utiliser JNDI ; par exemple
...
pour l’écriture d’un validateur JSF } catch (NamingException e) {
e.printStackTrace();
}

Si c’est possible, plus simple d’injecter l’EJB !


Richard Grin Présentation Java EE page 31 Richard Grin Présentation Java EE page 32

Injecter un EJB
 Ajouter une variable d’instance et l’injecter :
@EJB

Annexe
MonEJB monEJB;
 Et c’est tout ! C’est le container qui va fournir
l’EJB au code
Changer les ports utilisés par GlassFish

Richard Grin Présentation Java EE page 33 Richard Grin Présentation Java EE page 34

Vous aimerez peut-être aussi