SlideShare une entreprise Scribd logo
Java Entreprise Edition
Standard de développement d'applications d'entreprises
multi-niveaux, basées sur des composants
Sabri Bouchlema
Elève ingénieur en génie logiciel
Jcertif Student Ambassador
Partie 1 : Les bases
Partie 2 : Les frameworks
Partie 1 : Les bases
Plan
1. Architectures applicatives
2. Quelques notions (le web)
3. Les plateformes Java
4. La plateforme JEE
5. Démonstration
Architectures applicatives
Architecture 1 tiers
Les années 70, architecture Mainframe (1 tiers)
Avantages :
+ Développement rapide
Désavantages :
- Application monolithique
- Mises à jour et maintenance du code plus difficiles
- Code difficilement réutilisable
Architecture 2 tiers
Les années 80, architecture 2 tiers
Avantages :
+ Centralisation du code et des ressources
Désavantages :
- Application serveur monolithique
- Logique métier est répartie entre l'application serveur et le client
Architecture 3 tiers
Fin des années 80, architecture 3 tiers (RPC)
Primergy
Requètes
SQL
RPC
RPC
Base
de
Données
Présentation _ Métier _ Données
Architecture 3 tiers
Les années 90, architecture 3 tiers (Objets)
Primergy objet
objet objet
objet
RM
I / CORBA
RM
I / CORBA
Requètes SQL
Base
de
Données
Avantages :
+ Séparation forte entre les 3 niveaux
Désavantages :
- Protocole d’échange propriétaire
- Difficultés de maintenance: toute modification entraîne une mise à
niveau de chaque poste client.
Architecture Internet (N-tiers)
Les années 90, architecture (Internet)
Primergy
Internet
HTTP HTTP
SQL
Serveur Web + "CGI"
Navigateur
Base
de
Données
Avantages :
+ Pas d’installation sur les postes clients (hormis le navigateur lui-
même)
+ Chaque niveau peut être managé, dimensionné, distribué
+ Mises à jour et maintenance facilitées en minimisant l'impact sur les autres
couches
+ Extensibilité : ajout de nouvelles fonctionnalités simplifié
+ Possibilité de clients lourds et de clients légers
Quelques notions
HTTP
• Le HyperText Transfer Protocol, plus connu sous l'abréviation HTTP,
littéralement le « protocole de transfert hypertexte », est un
protocole de communication client-serveur développé pour le
World Wide Web. Il est utilisé pour échanger toute sorte de données
entre client HTTP et serveur HTTP.
✓ Le navigateur effectue une requête HTTP
✓ Le serveur traite la requête puis envoie une réponse HTTP
Requête HTTP
• Une requête HTTP est un ensemble de lignes envoyé au serveur par
le navigateur. Elle comprend :
✓ Une ligne de requête: c'est une ligne précisant le type de
document demandé, la méthode qui doit être appliquée, et la
version du protocole utilisée.
✓ Les champs d'en-tête de la requête: il s'agit d'un ensemble de
lignes facultatives permettant de donner des informations
supplémentaires sur la requête et/ou le client.
✓ Le corps de la requête: c'est un ensemble de lignes optionnelles
permettant par exemple un envoi de données par une
commande POST lors de l'envoi de données au serveur par un
formulaire.
Les méthodes
✓ GET: c'est la méthode la plus courante pour demander une
ressource. Une requête GET est sans effet sur la ressource, il doit
être possible de répéter la requête sans effet.
✓ HEAD: cette méthode ne demande que des informations sur la
ressource, sans demander la ressource elle-même.
✓ POST: cette méthode doit être utilisée lorsqu'une requête modifie la
ressource.
✓ PUT: cette méthode permet d'ajouter une ressource sur le serveur.
✓ DELETE: cette méthode permet de supprimer une ressource du
serveur.
Réponse HTTP
• Les réponses ont, elles aussi, toujours la même syntaxe :
✓ Une ligne de status: c'est une ligne précisant la version HTTP du
serveur , Code-réponse (le code d’erreur retourné par exemple
200, 403, 404, 500) et Texte-réponse (le texte associé à l'erreur
respectivement pour les exemples précédents : "OK",
"FORBIDDEN", "NOT FOUND", "INTERNAL ERROR").
✓ Les champs d'en-tête de la requête: Les en-têtes sont
nombreux aussi exemple :
✓ Date de génération de la réponse.
✓ le modèle du serveur HTTP.
✓ Corps: le Corps de réponse contient le contenu du fichier, le
HTML d'une page par exemple.
Site web statique
• Un site statique est un site constitué de pages créées en HTML. Il s’
agit d’un contenu fixe.
• Ainsi lorsqu’un ordinateur (par l’usage d’un navigateur internet) se
connecte au serveur hébergeant le site statique, la page demandée
est instantanément retournée, sans compilation ni traitement par
le serveur.
Site web dynamique
• Un site dynamique combinent différentes sources pour constituer
ses pages HTML.
• D’un côté il y a une base de données (MySQL, …), et de l’autre des
fichiers dans un langage de programmation dynamique (PHP,
Java, …) qui à la demande d’un ordinateur se connectant au
serveur, compile la page HTML avant de la délivrer.
Les plateformes Java
Java
Write once , Run everywhere …
• Java est un langage de programmation moderne développé par Sun
Microsystems (aujourd'hui racheté par Oracle).
• Une de ses plus grandes forces est son excellente portabilité : une
fois votre programme créé, il fonctionnera automatiquement sous
Windows, Mac, Linux, etc.
• Puissance
• Stabilité
• Sécurité
• …
Java Aujourd'hui ...
...3 environnements d'exécutions différents.
• Java ME (Micro Edition) pour téléphone
• Java SE (Standard Edition) pour desktop
• Java EE (Entreprise Edition) pour serveur
Problématique générale
Problématique
“Les applications d'entreprise” concernent aussi bien les grandes
entreprises que les petites …
Elles doivent être :
• Portables
• Fiables et sécurisées
• Maintenables et flexibles
• Performantes ...
Nécessité d'intégrer ou de s'intégrer à un système d'information existant.
Toutes ces considérations rendent les applications complexes !
La solution ?
La plateforme JEE
JEE – Java Entreprise Edition
Standard de développement d'applications d'entreprises multi-
niveaux, basées sur des composants.
Conscient de l’intérêt des architectures multi-tiers pour le développement d’
applications d’entreprises, la société Sun Microsystems a proposé , dès 1999,
une déclinaison de son SDK Java (Software Development Kit) baptisé JEE (Java
Enterprise Edition).
JEE est un ensemble de spécifications (et non pas un produit) qui, en
respectant une architecture multi-tiers, va décrire à la fois:
✓ L'infrastructure de gestion des applications.
✓ Les API des services utilisées pour concevoir ces applications.
L'infrastructure de gestion des applications
Serveur d’applications
JEE définit finement les rôles et les interfaces pour les applications 
ainsi que l'environnement dans lequel elles seront exécutées.
Ces recommandations permettent ainsi à des entreprises tierces de
développer des serveurs d'application conformes aux spécifications ainsi
définies, sans avoir à redévelopper les principaux services.
C'est-à-dire de l'environnement d'exécution,
Les applications d'entreprise ont souvent besoin des mêmes services système :
Gestion de la concurrence
Services transactionnels entre composants
Sécurité
Gestion de la session utilisateur
Gestion des montées en charge
Ouverture sur de multiples sources de données
Pools de connexion
Système de tolérance aux pannes et reprise sur incident
Le serveur d'application fournira ces services système
Serveur d’applications
✓ Serveur d'application JEE implémente les API JEE
✓ Il héberge des composants applicatifs
✓ Il fournit des services à ces composants au travers d'un conteneur (un
environnement d'exécution chargé de gérer des composants applicatifs et
leur donner accès aux API JEE)
✓ Il gère le noyau de l'application avec pour objectif central de répondre aux
requêtes des utilisateurs s'y connectant.
Des services, au travers d'API
Des services, au travers d'API
La plateforme JEE comprend des services, au travers d'API, c'est-à-dire des
extensions Java indépendantes permettant d'offrir en standard un certain
nombre de fonctionnalités.
Sun (aujourd'hui racheté par Oracle) fournit une implémentation minimale
de ces API appelée JEE SDK (JEE Software Development Kit)
Des services offerts,
API – Application Programming Interface
Une interface de programmation est un ensemble normalisé de classes, de
méthodes ou de fonctions qui sert de façade par laquelle un logiciel offre des
services à d'autres logiciels.
Dans le jargon Java, les APIs sont des librairies de composants réutilisables.
Les APIs sont des spécifications, implémentées ensuite (par IBM, Oracle, …)
sur les différentes plates-formes proposant un environnement d’exécution
Java.
Les API de JEE
Les API de JEE peuvent se répartir en deux grandes catégories :
✓ Les composants.
✓ Les services.
Les composants
✓ Les composants web:
✓ Les composants métier :
Servlets et JSP (Java Server Pages) il s’agit de la partie chargée de
l'interface avec l'utilisateur (on parle de logique de présentation).
EJB (Enterprise Java Beans), Il s'agit de composants spécifiques
chargés des traitements des données propres à un secteur 
d'activité (on parle de logique métier ou de logique applicative) et 
de l'interfaçage avec les bases de données.
Les composants web ..
✓ Servlet :
Une Servlet s’exécute dans un moteur de Servlet ou conteneur de
Servlet qui gère son cycle de vie.
Les servlets permettent donc de gérer des requêtes HTTP et de fournir
au client une réponse HTTP dynamique
Déploiement d’une servlet :
* Première solution : Descripteur de déploiement de servlet : web.xml
* Deuxième solution (Servlet 3.x): Annotations
➔ Les Servlets sont très pratiques pour déclencher des traitements
coté serveur suite à une requête HTTP.
➔ Dans une Servlet, on peut également générer une réponse HTTP en
utilisant l’objet RESPONSE.
➔ Mais, quant il s’agit de générer une page web complète, les
Servlets ne sont pas pratiques.
Il existe un autre moyen pour créer les servlet, c’est les page JSP.
✓ JSP : Java Server Pages
Les JSP sont très pratiques pour générer des pages web dynamiques.
Les JSP permettent d'introduire du code Java dans des tags prédéfinis à
l'intérieur d'une page HTML.
La technologie JSP mélange la puissance de Java côté serveur et la facilité
de mise en page d'HTML côté client.
Il s'agit en réalité d'un langage de script puissant (un langage interprété) 
exécuté du côté du serveur (au même titre que les scripts PHP,ASP,...)
@WebServlet("/Test")
public class Test extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
request.setAttribute("heure", "jour");
this.getServletContext().getRequestDispatcher("/WEB-INF/bonjour.jsp")
.forward(request, response);
}
}
<html>
<body>
<p>
<%
String heure = (String) request.getAttribute("heure");
if (heure.equals("jour")) {
out.println("Bonjour");
}
else {
out.println("Bonsoir");
}
%>
</p>
<p>
<%
for (int i = 0 ; i < 20 ; i++) {
out.println("Une nouvelle ligne !<br />");
}
%>
</p>
</body>
</html>
✓ JSTL : Java Standard Tag Library
JSTL est l'acronyme de Java server page Standard Tag Library.
C'est un ensemble de tags personnalisés qui propose des fonctionnalités
souvent rencontrées dans les JSP :
➔ Tag de structure (itération, conditionnement ...)
➔ Internationalisation
➔ Exécution de requête SQL
➔ Utilisation de document XML
Les services
✓ Les services d'infrastructures :
✓ Les services communication.
JDBC
JNDI
JTA / JTS
JCA
JMX
JAAS
JavaMail
JMS
RMI-IIOP
API de gestion de l'authentification et des droits d'accès.
API permettant l'envoi de courrier électronique.
API fournit des fonctionnalités de communication asynchrone.
API permettant la communication synchrone entre objets
API d'accès aux bases de données relationnelles.
API d’accès aux services de nommage et annuaires d’entreprises.
API définissant des interfaces standard avec un g. de transactions.
API de connexion au système d’information de l’entreprise (ERP).
F. des ext. permettant de dév Des apps web de supervision d’apps
Démonstration
Démonstration
✓ Cette démonstration permet de pratiquer les bases du développement web
JEE en utilisant les composants Web Servlet, JSP et JSTL , sans faire appel
à aucun Framework.
✓  Elle montre un exemple d'application web JEE qui respecte le pattern MVC
avec une couche métier qui effectue le mapping objet relationnel JDBC.
✓ C'est une application qui permet de ajouter, supprimer, et consulter des
produits stockés dans une base de données MYSQL.
 l'application se compose de deux couches :
✓ La couche Métier :
- Une entité :Produit
- Une interface
- Un singleton Connection
- Une implémentation de l'interface
- Une classe pour Tester cette implémentation
✓ La couche Web :
- Un contrôleur : Servlet - Une vue JSP - Une feuille de style CSS
Cette démonstration vous permet d'apprendre les concepts suivants :
✓ Créer une base de données MySQL
✓ Effectuer le mapping objet relationnel avec JDBC
✓ Créer un pattern Singleton
✓ Utiliser le pilote JDBC
✓ Respecter le pattern MVC
✓ Créer une servlet et le Déployer
✓ Créer une JSP en utilisant JSTL
Cet exemple est un passage idéale avant de commencer à utiliser les
Framework Hibernate, Spring, Struts ou JSF.
Let’s code!
Partie 2 : Les frameworks
Plan
1. Industrialisation du génie logiciel
2. Les frameworks
3. Démonstration
Industrialisation du génie
logiciel
Industrialisation du génie logiciel
✓ Le processus du développement logiciel est, aujourd'hui complètement
industrialisé.
✓ Un logiciel est construit à base de composants :
➔ Réutilisables
➔ Interchangeable
➔ Évolutifs
➔ Reconfigurables
➔ Mobiles
➔ Surveillables à chaud
Avènement des technologies Open Source
✓ En dix ans le développement logiciel a évolué en grande partie grâce aux
technologies Open Sources.
✓ Celles ci permettent aux développeurs de ne pas réinventer
perpétuellement la roue et de se concentrer sur les aspects métiers, sans
pour autant tomber sous l’emprise technologique d’un éditeur.
✓ Les technologies Open Source rivalisent avec des standards officiels au
point de devenir des standards.
➔ Spring
➔ Struts
➔ Hibernate
Avènement des méthodologies Agile
✓ Les méthodes Agile de gestion projet et de développement comme Scrum
ou l'eXtreme Programming (XP) partent du constat que le cycle de
développement en cascade est un échec.
✓ Développement en cascade:
➔ Spécifier pendant X mois,
➔ puis ensuite coder Y mois,
➔ tester Z mois,
pour livrer au client un projet qui ne correspond plus tout à fait à ses
attentes.
Avènement des méthodologies Agile
✓ Les méthodes Agile prônent:
➔ les tests avant le développement,
➔ des cycles de développement itératifs,
➔ l’implication du client final tout au long du projet,
➔ des spécifications réduites en début de projet,
➔ etc.
✓ Les méthodologies Agile sont pragmatiques, Ont fait leurs preuves et sont
prisées par de grands industriels de logiciels.
Industrialiser le cycle de vie : améliorations,
maintenance, corrections
✓ Pour industrialiser les composants logiciels, il est nécessaire d’utiliser des
outils qui permettent d’automatiser le processus de fabrication des logiciels
➔ Frameworks de tests : JUnit
◆ Ils permettent de créer des tests sur des fonctions métiers.
◆ Faisant partie intégrante du projet, les tests peuvent être
rejoués par tous les développeurs afin de vérifier que les
dernières modification du code ne génèrent aucune régression.
Industrialiser le cycle de vie : améliorations,
maintenance, corrections
➔ Outils d'intégration continue : Maven
◆ Ils jouent le rôle de chef d'orchestre en lançant
automatiquement
● les tests,
● le contrôle de qualité du code,
◆ Génèrent les builds et la documentation technique des
packages ou bibliothèques de classes.
◆ L'intégration continue est un élément centrale de
l'industrialisation du cycle de vie.
Exigences d’un projet informatique
Exigences fonctionnelles:
Une application est créée pour répondre , tout d’abord, aux besoins
fonctionnels des entreprises.
Exigences Techniques :
• Les performances , la maintenance, Sécurité, Portabilité, Distribution
• Capacité de communiquer avec d’autres applications distantes.
• Capacité de fournir le service à différents type de clients (Desktop,Mobile,
SMS, http...)
• ...
Exigence financières.
Constat :
Il est très difficile de développer un système logiciel qui respecte ces exigences sans utiliser l’
expérience des autres :
✓ Serveur d’application JEE: JBOSS, Web Sphere, GlassFish, Tomcat,
✓ Framework pour l’Inversion de contrôle: Spring (Conteneur léger)EJB (Conteneur lourd)
✓ Frameworks Mapping objet relationnel (ORM ) : JPA, Hibernate, Toplink, …
✓ Applications Web : Struts, JSF, SpringMVC....
✓ Middlewares :
➔ RMI, CORBA : Applications distribuées
➔ JAXWS, JAXRS our Web services
➔ JMS : Communication asynchrone entre les application
➔ JMX : Supervision des composants….
✓ la couche [web] est la couche en contact avec l'utilisateur en utilisant le protocole
HTTP.
✓ la couche [metier] implémente les règles de gestion de l'application, tels que le
calcul d'un salaire ou d'une facture. Cette couche utilise des données provenant de
l'utilisateur via la couche [web] et du Sgbd via la couche [dao].
✓ la couche [dao] (Data Access Objects), la couche [jpa] (Java Persistence Api) et le
pilote Jdbc gèrent l'accès aux données du Sgbd.
l'intégration des couches peut être réalisée par un conteneur Spring ou
Ejb3 .
Les frameworks
La framework Spring
La framework Spring
✓ Spring est un framework open source JEE pour les applications ntiers, dont il facilite le
développement et les tests.
✓ Il est considéré comme un conteneur dit « léger », c’est-à-dire une infrastructure similaire à un
serveur d’application JEE.
✓ Il prend donc en charge la création d’objets et la mise en relation d’objets par l’intermédiaire
d’un fichier de configuration qui décrit les objets à fabriquer et les relations de dépendances
entre ces objets.
✓ Il permet de séparer le code métier du code technique.
✓ Spring s’appuie principalement sur l’intégration de trois concepts clés :
➔ l’inversion de contrôle ou injection de dépendance (IoC).
➔ la programmation orientée aspect (AOP).
➔ une couche d’abstraction.
La framework Spring
✓ Spring est modulaire , permettant
de choisir les modules
appropriés à votre application, sans
être obligé d’utiliser le reste.
✓ Spring Framework fournit
plus de 20 modules qui
peuvent être utilisé dans les applications.
1- Spring IOC
2- Spring MVC
Spring IOC (Inversion Of Control)
Inversion de contrôle
ou
Injection de dépendances
Rappels de quelque principes de conception
● Une application qui n’évolue pas meurt.
● Une application doit être fermée à la modification et ouverte à
l’extension.
● Une application doit s’adapter aux changements
● Efforcez-vous à coupler faiblement vos classes.
● Programmer une interface et non une implémentation
● Etc..
Couplage fort
et
Couplage faible
Couplage fort
➔ Quand une classe A est lié à une classe B, on dit que la classe A est fortement couplée
à la classe B.
➔ La classe A ne peut fonctionner qu’en présence de la classe B.
➔ Si une nouvelle version de la classe B (soit B2), est crée, on est obligé de modifier dans
la classe A.
➔ Modifier une classe implique:
◆ Il faut disposer du code source.
◆ Il faut recompiler, déployer et
distribuer la nouvelle application
aux clients.
◆ Ce qui engendre un cauchemar au niveau de la maintenance de l’application
Nous allons voir que nous pourrons faire mieux en utilisant le couplage faible.
Couplage faible
➔ Pour utiliser le couplage faible, nous devons utiliser les interfaces.
➔ Considérons une classe A qui implémente une interface IA, et une classe B qui
implémente une interface IB.
➔ Si la classe A est liée à l’interface IB par une association, on dit que le classe A et la
classe B sont liées par un couplage faible.
➔ Avec le couplage faible, nous pourrons créer des application fermée à la
modification et ouvertes à l’extension.
Injection des dépendances
Injection par instanciation statique :
Injection des dépendances
Injection Injection par instanciation dynamique
par réflexion :
Fichier texte de configuration :
config.txt
● ext.DaoImp
● metier.MetierImpl
Injection des dépendances avec Spring.
➔ L’injection des dépendance, ou l’inversion de contrôle est un concept
qui intervient généralement au début de l’exécution de l’application.
➔ Spring IOC commence par lire un fichier XML qui déclare quelles sont
différentes classes à instancier et d’assurer les dépendances entre les différentes
instances.
➔ Quand on a besoin d’intégrer une nouvelle implémentation à une application,
il suffirait de la déclarer dans le fichier xml de beans spring.
Injection des dépendances dans une app java
standard
Injection des dépendances dans une app java
standard
Injection des dépendances dans une app web
➔ L’injection Dans une application web, SpringIOC est appelé au démarrage du
serveur en déclarant le listener ContextLoaderListener dans le fichier
web.xml
➔ Dans cette déclaration, CotextLoaderListener est appelé par Tomcat au moment du
démarrage de l’application.
➔ Ce listener cherchera le fichier de beans spring « spring-beans.xml » stocké dans le
dossier WEB-INF. ce qui permet de faire l’injection des dépendances entre
MetierImpl et DaoImpl.
Spring MVC (Model View Controller)
Spring MVC
Architecture Spring MVC
Spring MVC
Un exemple de Controleur Spring MVC
Un exemple de Vue JSP
Fonctionnement
Architecture
La framework Hibernate
Application Orienté objet
Introduction
➔ Travailler dans les deux univers que sont l'orienté objet et la base de données
relationnelle peut être lourd et consommateur en temps dans le monde de
l'entreprise d'aujourd'hui.
➔ Hibernate est un outil de mapping objet/relationnel pour le monde Java.
➔ Le terme mapping objet/relationnel (ORM) décrit la technique consistant
à faire le lien entre la représentation objet des données et sa représentation
relationnelle basée sur un schéma SQL.
Le but de Hibernate
➔ Le but d'Hibernate est de libérer le développeur de 95 pourcent des
tâches de programmation liées à la persistance des données communes.
➔ Hibernate assure la portabilité de votre application si vous changer de SGBD.
➔ Hibernate propose au développeur des méthodes d’accès aux bases de données
plus efficace ce qui devrait rassurer les développeurs.
Implémentation d’une entité
Mapping Objet Relationnel des entités
➔ Il existe deux moyens pour mapper les entités :
◆ Créer des fichier XML de mapping
◆ Utiliser les Annotations JPA
➔ I 'utilisation des annotations JPA laisse votre code indépendant de Hibernate.
➔ La création des fichiers XML de mapping a l’avantage de séparer le code java du
mapping objet relationnel.
➔ Dans cette formation, nous allons utiliser les annotations JPA
Quelques annotations JPA de Mapping des Entités
Mapping des entités en utilisant les annotations JPA
Maven
Maven
➔ Maven, géré par l'organisation Apache Software Foundation.
(Jakarta Project), est un outil pour la gestion et l'automatisation
de production des projets logiciels Java en général et Java EE en particulier.
Maven
L'objectif recherché est de:
◆ produire un logiciel à partir de ses sources,
◆ en optimisant les tâches réalisées à cette fin
◆ et en garantissant le bon ordre de fabrication.
● Compiler, Tester, Contrôler, produire les packages livrables
● Publier la documentation et les rapports sur la qualité
Apports :
◆ Simplification du processus de construction d’une application
◆ Fournit les bonnes pratique de développement
◆ Tend à uniformiser le processus de construction logiciel
◆ Vérifier la qualité du code
◆ Faciliter la maintenance d’un projet
Maven : POM
Maven utilise un paradigme connu sous le nom de Project Object
Model (POM) afin de :
● Décrire un projet logiciel,
● Ses dépendances avec des modules externes
● et l'ordre à suivre pour sa production.
Démonstration
Démonstration
✓ Cette démonstration permet de pratiquer les bases des développement web
JEE en utilisant les Framework Spring et Hibernate.
✓ C'est une application qui permet de ajouter, supprimer, modifier et
consulter des produits stockés dans une base de données MYSQL.
✓ Maven, JUnit ,SpringIOC ,SpringMVC , JPA, Hibernate
L’architecture :
Spring MVC
Fonctionnement
Resources
Démonstration
✓ Création d’un projet Spring.
✓ Implémentation des entités.
✓ Mapping des entités en utilisant les annotations JPA.
✓ Configuration de Hibernate “persistence.xml”.
✓ Verifier la génération des tables “JUnit”.
✓ Implémentation de la couche Metier et la couche Dao.
✓ Configuration JPA avec Spring IOC
✓ Verifier les services “JUnit”.
✓ Implémentation de la couche Web
Mapping des entités en utilisant les annotations JPA
<!-- Hibernate-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.1.0.Final</version>
</dependency>
<!-- MySQL Connector-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
Configuration de Hibernate “persistence.xml”
<persistence-unit name="UP_EBOUTIQUE" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
</properties>
</persistence-unit>
Configuration JPA avec Spring IOC
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
Configuration JPA avec Spring IOC
<bean id="dao" class="net.youssfi.eboutique.dao.BoutiqueDaoImpl"></bean>
<bean id="metier" class="net.youssfi.eboutique.metier.BoutiqueMetierImpl">
<property name="dao" ref="dao"></property>
</bean>
<bean id="persistenceUnitManager"
class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="defaultDataSource" ref="datasource"></property>
<property name="persistenceXmlLocations">
<list>
<value>classpath*:META-INF/persistence.xml</value>
</list>
</property>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager" ref="persistenceUnitManager"></property>
<property name="persistenceUnitName" value="UP_EBOUTIQUE"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<context:annotation-config></context:annotation-config>
</beans>
Let’s code!
Merci!
Sabri Bouchlema
Elève ingénieur en génie logiciel
Jcertif Student Ambassador

Contenu connexe

Tendances

Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
ENSET, Université Hassan II Casablanca
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
Ines Ouaz
 
Laravel 9 comprendre les fondamentaux.
Laravel 9 comprendre les fondamentaux.Laravel 9 comprendre les fondamentaux.
Laravel 9 comprendre les fondamentaux.
Valdy Ngouabira
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
Abdoulaye Dieng
 
Langage HTML
Langage HTMLLangage HTML
Langage HTML
El Habib NFAOUI
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
ENSET, Université Hassan II Casablanca
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
Youness Boukouchi
 
Introduction à ajax
Introduction à ajaxIntroduction à ajax
Introduction à ajax
Abdoulaye Dieng
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
ENSET, Université Hassan II Casablanca
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)
Ahmed-Chawki Chaouche
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
ENSET, Université Hassan II Casablanca
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
Kristen Le Liboux
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
ENSET, Université Hassan II Casablanca
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sass
marwa baich
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
Lilia Sfaxi
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
Olivier Le Goaër
 
Modele mvc
Modele mvcModele mvc
Modele mvc
Soulef riahi
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
ENSET, Université Hassan II Casablanca
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
Abdoulaye Dieng
 

Tendances (20)

Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Laravel 9 comprendre les fondamentaux.
Laravel 9 comprendre les fondamentaux.Laravel 9 comprendre les fondamentaux.
Laravel 9 comprendre les fondamentaux.
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Langage HTML
Langage HTMLLangage HTML
Langage HTML
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Introduction à ajax
Introduction à ajaxIntroduction à ajax
Introduction à ajax
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sass
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 

En vedette

JavaFX - Bringing rich Internet applications ...
JavaFX - Bringing rich Internet applications ...JavaFX - Bringing rich Internet applications ...
JavaFX - Bringing rich Internet applications ...
terrencebarr
 
JavaFX Uni Parthenope
JavaFX Uni ParthenopeJavaFX Uni Parthenope
JavaFX Uni Parthenope
Emanuela Giannetta
 
Presentation - Course about JavaFX
Presentation - Course about JavaFXPresentation - Course about JavaFX
Presentation - Course about JavaFX
Tom Mix Petreca
 
Building Java Desktop Apps with JavaFX 8 and Java EE 7
Building Java Desktop Apps with JavaFX 8 and Java EE 7Building Java Desktop Apps with JavaFX 8 and Java EE 7
Building Java Desktop Apps with JavaFX 8 and Java EE 7
Bruno Borges
 
JavaFX Presentation
JavaFX PresentationJavaFX Presentation
JavaFX Presentation
Mochamad Taufik Mulyadi
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
ENSET, Université Hassan II Casablanca
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
ENSET, Université Hassan II Casablanca
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
ENSET, Université Hassan II Casablanca
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
ENSET, Université Hassan II Casablanca
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
ENSET, Université Hassan II Casablanca
 

En vedette (10)

JavaFX - Bringing rich Internet applications ...
JavaFX - Bringing rich Internet applications ...JavaFX - Bringing rich Internet applications ...
JavaFX - Bringing rich Internet applications ...
 
JavaFX Uni Parthenope
JavaFX Uni ParthenopeJavaFX Uni Parthenope
JavaFX Uni Parthenope
 
Presentation - Course about JavaFX
Presentation - Course about JavaFXPresentation - Course about JavaFX
Presentation - Course about JavaFX
 
Building Java Desktop Apps with JavaFX 8 and Java EE 7
Building Java Desktop Apps with JavaFX 8 and Java EE 7Building Java Desktop Apps with JavaFX 8 and Java EE 7
Building Java Desktop Apps with JavaFX 8 and Java EE 7
 
JavaFX Presentation
JavaFX PresentationJavaFX Presentation
JavaFX Presentation
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 

Similaire à Java Entreprise Edition

La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
Sabri Bouchlema
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
Sabri Bouchlema
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
Rachida19
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
aliagadir
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
ENSET, Université Hassan II Casablanca
 
introductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdfintroductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdf
HamdaneAbdelAzizHagg
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Eric Bourdet
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Eric Bourdet
 
Programmation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfProgrammation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdf
ngombeemmanuel
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
ATHMAN HAJ-HAMOU
 
Google Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonGoogle Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative Common
Stéphane Liétard
 
Mysql
MysqlMysql
Mysql
ismail1989
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
Nazih Heni
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
Winslo Nwan
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
hkairi
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
EJB.pdf
EJB.pdfEJB.pdf
EJB.pdf
ssuser192642
 

Similaire à Java Entreprise Edition (20)

La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
introductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdfintroductionaudevcomposantdistribuejavaee.pdf
introductionaudevcomposantdistribuejavaee.pdf
 
J2 ee
J2 eeJ2 ee
J2 ee
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01
 
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
Supportdecoursejb3versioncompletemryoussfi 140317162653-phpapp01 (1)
 
Programmation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfProgrammation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdf
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
 
Google Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonGoogle Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative Common
 
Mysql
MysqlMysql
Mysql
 
serveur web
serveur webserveur web
serveur web
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
EJB.pdf
EJB.pdfEJB.pdf
EJB.pdf
 
Java Server Faces 2
Java Server Faces 2Java Server Faces 2
Java Server Faces 2
 

Java Entreprise Edition

  • 1. Java Entreprise Edition Standard de développement d'applications d'entreprises multi-niveaux, basées sur des composants Sabri Bouchlema Elève ingénieur en génie logiciel Jcertif Student Ambassador
  • 2. Partie 1 : Les bases Partie 2 : Les frameworks
  • 3. Partie 1 : Les bases
  • 4. Plan 1. Architectures applicatives 2. Quelques notions (le web) 3. Les plateformes Java 4. La plateforme JEE 5. Démonstration
  • 6. Architecture 1 tiers Les années 70, architecture Mainframe (1 tiers)
  • 7. Avantages : + Développement rapide Désavantages : - Application monolithique - Mises à jour et maintenance du code plus difficiles - Code difficilement réutilisable
  • 8. Architecture 2 tiers Les années 80, architecture 2 tiers
  • 9. Avantages : + Centralisation du code et des ressources Désavantages : - Application serveur monolithique - Logique métier est répartie entre l'application serveur et le client
  • 10. Architecture 3 tiers Fin des années 80, architecture 3 tiers (RPC) Primergy Requètes SQL RPC RPC Base de Données Présentation _ Métier _ Données
  • 11. Architecture 3 tiers Les années 90, architecture 3 tiers (Objets) Primergy objet objet objet objet RM I / CORBA RM I / CORBA Requètes SQL Base de Données
  • 12. Avantages : + Séparation forte entre les 3 niveaux Désavantages : - Protocole d’échange propriétaire - Difficultés de maintenance: toute modification entraîne une mise à niveau de chaque poste client.
  • 13. Architecture Internet (N-tiers) Les années 90, architecture (Internet) Primergy Internet HTTP HTTP SQL Serveur Web + "CGI" Navigateur Base de Données
  • 14. Avantages : + Pas d’installation sur les postes clients (hormis le navigateur lui- même) + Chaque niveau peut être managé, dimensionné, distribué + Mises à jour et maintenance facilitées en minimisant l'impact sur les autres couches + Extensibilité : ajout de nouvelles fonctionnalités simplifié + Possibilité de clients lourds et de clients légers
  • 15.
  • 17. HTTP • Le HyperText Transfer Protocol, plus connu sous l'abréviation HTTP, littéralement le « protocole de transfert hypertexte », est un protocole de communication client-serveur développé pour le World Wide Web. Il est utilisé pour échanger toute sorte de données entre client HTTP et serveur HTTP.
  • 18. ✓ Le navigateur effectue une requête HTTP ✓ Le serveur traite la requête puis envoie une réponse HTTP
  • 19. Requête HTTP • Une requête HTTP est un ensemble de lignes envoyé au serveur par le navigateur. Elle comprend : ✓ Une ligne de requête: c'est une ligne précisant le type de document demandé, la méthode qui doit être appliquée, et la version du protocole utilisée. ✓ Les champs d'en-tête de la requête: il s'agit d'un ensemble de lignes facultatives permettant de donner des informations supplémentaires sur la requête et/ou le client. ✓ Le corps de la requête: c'est un ensemble de lignes optionnelles permettant par exemple un envoi de données par une commande POST lors de l'envoi de données au serveur par un formulaire.
  • 20. Les méthodes ✓ GET: c'est la méthode la plus courante pour demander une ressource. Une requête GET est sans effet sur la ressource, il doit être possible de répéter la requête sans effet. ✓ HEAD: cette méthode ne demande que des informations sur la ressource, sans demander la ressource elle-même. ✓ POST: cette méthode doit être utilisée lorsqu'une requête modifie la ressource. ✓ PUT: cette méthode permet d'ajouter une ressource sur le serveur. ✓ DELETE: cette méthode permet de supprimer une ressource du serveur.
  • 21. Réponse HTTP • Les réponses ont, elles aussi, toujours la même syntaxe : ✓ Une ligne de status: c'est une ligne précisant la version HTTP du serveur , Code-réponse (le code d’erreur retourné par exemple 200, 403, 404, 500) et Texte-réponse (le texte associé à l'erreur respectivement pour les exemples précédents : "OK", "FORBIDDEN", "NOT FOUND", "INTERNAL ERROR"). ✓ Les champs d'en-tête de la requête: Les en-têtes sont nombreux aussi exemple : ✓ Date de génération de la réponse. ✓ le modèle du serveur HTTP. ✓ Corps: le Corps de réponse contient le contenu du fichier, le HTML d'une page par exemple.
  • 22. Site web statique • Un site statique est un site constitué de pages créées en HTML. Il s’ agit d’un contenu fixe. • Ainsi lorsqu’un ordinateur (par l’usage d’un navigateur internet) se connecte au serveur hébergeant le site statique, la page demandée est instantanément retournée, sans compilation ni traitement par le serveur.
  • 23. Site web dynamique • Un site dynamique combinent différentes sources pour constituer ses pages HTML. • D’un côté il y a une base de données (MySQL, …), et de l’autre des fichiers dans un langage de programmation dynamique (PHP, Java, …) qui à la demande d’un ordinateur se connectant au serveur, compile la page HTML avant de la délivrer.
  • 25. Java Write once , Run everywhere … • Java est un langage de programmation moderne développé par Sun Microsystems (aujourd'hui racheté par Oracle). • Une de ses plus grandes forces est son excellente portabilité : une fois votre programme créé, il fonctionnera automatiquement sous Windows, Mac, Linux, etc. • Puissance • Stabilité • Sécurité • …
  • 26. Java Aujourd'hui ... ...3 environnements d'exécutions différents. • Java ME (Micro Edition) pour téléphone • Java SE (Standard Edition) pour desktop • Java EE (Entreprise Edition) pour serveur
  • 28. Problématique “Les applications d'entreprise” concernent aussi bien les grandes entreprises que les petites … Elles doivent être : • Portables • Fiables et sécurisées • Maintenables et flexibles • Performantes ... Nécessité d'intégrer ou de s'intégrer à un système d'information existant. Toutes ces considérations rendent les applications complexes !
  • 31. JEE – Java Entreprise Edition Standard de développement d'applications d'entreprises multi- niveaux, basées sur des composants. Conscient de l’intérêt des architectures multi-tiers pour le développement d’ applications d’entreprises, la société Sun Microsystems a proposé , dès 1999, une déclinaison de son SDK Java (Software Development Kit) baptisé JEE (Java Enterprise Edition). JEE est un ensemble de spécifications (et non pas un produit) qui, en respectant une architecture multi-tiers, va décrire à la fois: ✓ L'infrastructure de gestion des applications. ✓ Les API des services utilisées pour concevoir ces applications.
  • 32. L'infrastructure de gestion des applications
  • 33. Serveur d’applications JEE définit finement les rôles et les interfaces pour les applications  ainsi que l'environnement dans lequel elles seront exécutées. Ces recommandations permettent ainsi à des entreprises tierces de développer des serveurs d'application conformes aux spécifications ainsi définies, sans avoir à redévelopper les principaux services. C'est-à-dire de l'environnement d'exécution,
  • 34. Les applications d'entreprise ont souvent besoin des mêmes services système : Gestion de la concurrence Services transactionnels entre composants Sécurité Gestion de la session utilisateur Gestion des montées en charge Ouverture sur de multiples sources de données Pools de connexion Système de tolérance aux pannes et reprise sur incident Le serveur d'application fournira ces services système
  • 35. Serveur d’applications ✓ Serveur d'application JEE implémente les API JEE ✓ Il héberge des composants applicatifs ✓ Il fournit des services à ces composants au travers d'un conteneur (un environnement d'exécution chargé de gérer des composants applicatifs et leur donner accès aux API JEE) ✓ Il gère le noyau de l'application avec pour objectif central de répondre aux requêtes des utilisateurs s'y connectant.
  • 36. Des services, au travers d'API
  • 37. Des services, au travers d'API La plateforme JEE comprend des services, au travers d'API, c'est-à-dire des extensions Java indépendantes permettant d'offrir en standard un certain nombre de fonctionnalités. Sun (aujourd'hui racheté par Oracle) fournit une implémentation minimale de ces API appelée JEE SDK (JEE Software Development Kit) Des services offerts,
  • 38. API – Application Programming Interface Une interface de programmation est un ensemble normalisé de classes, de méthodes ou de fonctions qui sert de façade par laquelle un logiciel offre des services à d'autres logiciels. Dans le jargon Java, les APIs sont des librairies de composants réutilisables. Les APIs sont des spécifications, implémentées ensuite (par IBM, Oracle, …) sur les différentes plates-formes proposant un environnement d’exécution Java.
  • 39. Les API de JEE Les API de JEE peuvent se répartir en deux grandes catégories : ✓ Les composants. ✓ Les services.
  • 40. Les composants ✓ Les composants web: ✓ Les composants métier : Servlets et JSP (Java Server Pages) il s’agit de la partie chargée de l'interface avec l'utilisateur (on parle de logique de présentation). EJB (Enterprise Java Beans), Il s'agit de composants spécifiques chargés des traitements des données propres à un secteur  d'activité (on parle de logique métier ou de logique applicative) et  de l'interfaçage avec les bases de données.
  • 42. ✓ Servlet : Une Servlet s’exécute dans un moteur de Servlet ou conteneur de Servlet qui gère son cycle de vie. Les servlets permettent donc de gérer des requêtes HTTP et de fournir au client une réponse HTTP dynamique
  • 43.
  • 44.
  • 45.
  • 46. Déploiement d’une servlet : * Première solution : Descripteur de déploiement de servlet : web.xml * Deuxième solution (Servlet 3.x): Annotations
  • 47. ➔ Les Servlets sont très pratiques pour déclencher des traitements coté serveur suite à une requête HTTP. ➔ Dans une Servlet, on peut également générer une réponse HTTP en utilisant l’objet RESPONSE. ➔ Mais, quant il s’agit de générer une page web complète, les Servlets ne sont pas pratiques. Il existe un autre moyen pour créer les servlet, c’est les page JSP.
  • 48. ✓ JSP : Java Server Pages Les JSP sont très pratiques pour générer des pages web dynamiques. Les JSP permettent d'introduire du code Java dans des tags prédéfinis à l'intérieur d'une page HTML. La technologie JSP mélange la puissance de Java côté serveur et la facilité de mise en page d'HTML côté client. Il s'agit en réalité d'un langage de script puissant (un langage interprété)  exécuté du côté du serveur (au même titre que les scripts PHP,ASP,...)
  • 49.
  • 50.
  • 51.
  • 52.
  • 53. @WebServlet("/Test") public class Test extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("heure", "jour"); this.getServletContext().getRequestDispatcher("/WEB-INF/bonjour.jsp") .forward(request, response); } }
  • 54. <html> <body> <p> <% String heure = (String) request.getAttribute("heure"); if (heure.equals("jour")) { out.println("Bonjour"); } else { out.println("Bonsoir"); } %> </p> <p> <% for (int i = 0 ; i < 20 ; i++) { out.println("Une nouvelle ligne !<br />"); } %> </p> </body> </html>
  • 55. ✓ JSTL : Java Standard Tag Library JSTL est l'acronyme de Java server page Standard Tag Library. C'est un ensemble de tags personnalisés qui propose des fonctionnalités souvent rencontrées dans les JSP : ➔ Tag de structure (itération, conditionnement ...) ➔ Internationalisation ➔ Exécution de requête SQL ➔ Utilisation de document XML
  • 56.
  • 57. Les services ✓ Les services d'infrastructures : ✓ Les services communication. JDBC JNDI JTA / JTS JCA JMX JAAS JavaMail JMS RMI-IIOP API de gestion de l'authentification et des droits d'accès. API permettant l'envoi de courrier électronique. API fournit des fonctionnalités de communication asynchrone. API permettant la communication synchrone entre objets API d'accès aux bases de données relationnelles. API d’accès aux services de nommage et annuaires d’entreprises. API définissant des interfaces standard avec un g. de transactions. API de connexion au système d’information de l’entreprise (ERP). F. des ext. permettant de dév Des apps web de supervision d’apps
  • 58.
  • 60. Démonstration ✓ Cette démonstration permet de pratiquer les bases du développement web JEE en utilisant les composants Web Servlet, JSP et JSTL , sans faire appel à aucun Framework. ✓  Elle montre un exemple d'application web JEE qui respecte le pattern MVC avec une couche métier qui effectue le mapping objet relationnel JDBC. ✓ C'est une application qui permet de ajouter, supprimer, et consulter des produits stockés dans une base de données MYSQL.
  • 61.  l'application se compose de deux couches : ✓ La couche Métier : - Une entité :Produit - Une interface - Un singleton Connection - Une implémentation de l'interface - Une classe pour Tester cette implémentation ✓ La couche Web : - Un contrôleur : Servlet - Une vue JSP - Une feuille de style CSS
  • 62. Cette démonstration vous permet d'apprendre les concepts suivants : ✓ Créer une base de données MySQL ✓ Effectuer le mapping objet relationnel avec JDBC ✓ Créer un pattern Singleton ✓ Utiliser le pilote JDBC ✓ Respecter le pattern MVC ✓ Créer une servlet et le Déployer ✓ Créer une JSP en utilisant JSTL Cet exemple est un passage idéale avant de commencer à utiliser les Framework Hibernate, Spring, Struts ou JSF.
  • 64. Partie 2 : Les frameworks
  • 65. Plan 1. Industrialisation du génie logiciel 2. Les frameworks 3. Démonstration
  • 67. Industrialisation du génie logiciel ✓ Le processus du développement logiciel est, aujourd'hui complètement industrialisé. ✓ Un logiciel est construit à base de composants : ➔ Réutilisables ➔ Interchangeable ➔ Évolutifs ➔ Reconfigurables ➔ Mobiles ➔ Surveillables à chaud
  • 68. Avènement des technologies Open Source ✓ En dix ans le développement logiciel a évolué en grande partie grâce aux technologies Open Sources. ✓ Celles ci permettent aux développeurs de ne pas réinventer perpétuellement la roue et de se concentrer sur les aspects métiers, sans pour autant tomber sous l’emprise technologique d’un éditeur. ✓ Les technologies Open Source rivalisent avec des standards officiels au point de devenir des standards. ➔ Spring ➔ Struts ➔ Hibernate
  • 69. Avènement des méthodologies Agile ✓ Les méthodes Agile de gestion projet et de développement comme Scrum ou l'eXtreme Programming (XP) partent du constat que le cycle de développement en cascade est un échec. ✓ Développement en cascade: ➔ Spécifier pendant X mois, ➔ puis ensuite coder Y mois, ➔ tester Z mois, pour livrer au client un projet qui ne correspond plus tout à fait à ses attentes.
  • 70. Avènement des méthodologies Agile ✓ Les méthodes Agile prônent: ➔ les tests avant le développement, ➔ des cycles de développement itératifs, ➔ l’implication du client final tout au long du projet, ➔ des spécifications réduites en début de projet, ➔ etc. ✓ Les méthodologies Agile sont pragmatiques, Ont fait leurs preuves et sont prisées par de grands industriels de logiciels.
  • 71. Industrialiser le cycle de vie : améliorations, maintenance, corrections ✓ Pour industrialiser les composants logiciels, il est nécessaire d’utiliser des outils qui permettent d’automatiser le processus de fabrication des logiciels ➔ Frameworks de tests : JUnit ◆ Ils permettent de créer des tests sur des fonctions métiers. ◆ Faisant partie intégrante du projet, les tests peuvent être rejoués par tous les développeurs afin de vérifier que les dernières modification du code ne génèrent aucune régression.
  • 72. Industrialiser le cycle de vie : améliorations, maintenance, corrections ➔ Outils d'intégration continue : Maven ◆ Ils jouent le rôle de chef d'orchestre en lançant automatiquement ● les tests, ● le contrôle de qualité du code, ◆ Génèrent les builds et la documentation technique des packages ou bibliothèques de classes. ◆ L'intégration continue est un élément centrale de l'industrialisation du cycle de vie.
  • 73. Exigences d’un projet informatique Exigences fonctionnelles: Une application est créée pour répondre , tout d’abord, aux besoins fonctionnels des entreprises. Exigences Techniques : • Les performances , la maintenance, Sécurité, Portabilité, Distribution • Capacité de communiquer avec d’autres applications distantes. • Capacité de fournir le service à différents type de clients (Desktop,Mobile, SMS, http...) • ... Exigence financières.
  • 74. Constat : Il est très difficile de développer un système logiciel qui respecte ces exigences sans utiliser l’ expérience des autres : ✓ Serveur d’application JEE: JBOSS, Web Sphere, GlassFish, Tomcat, ✓ Framework pour l’Inversion de contrôle: Spring (Conteneur léger)EJB (Conteneur lourd) ✓ Frameworks Mapping objet relationnel (ORM ) : JPA, Hibernate, Toplink, … ✓ Applications Web : Struts, JSF, SpringMVC.... ✓ Middlewares : ➔ RMI, CORBA : Applications distribuées ➔ JAXWS, JAXRS our Web services ➔ JMS : Communication asynchrone entre les application ➔ JMX : Supervision des composants….
  • 75. ✓ la couche [web] est la couche en contact avec l'utilisateur en utilisant le protocole HTTP. ✓ la couche [metier] implémente les règles de gestion de l'application, tels que le calcul d'un salaire ou d'une facture. Cette couche utilise des données provenant de l'utilisateur via la couche [web] et du Sgbd via la couche [dao]. ✓ la couche [dao] (Data Access Objects), la couche [jpa] (Java Persistence Api) et le pilote Jdbc gèrent l'accès aux données du Sgbd. l'intégration des couches peut être réalisée par un conteneur Spring ou Ejb3 .
  • 76.
  • 79. La framework Spring ✓ Spring est un framework open source JEE pour les applications ntiers, dont il facilite le développement et les tests. ✓ Il est considéré comme un conteneur dit « léger », c’est-à-dire une infrastructure similaire à un serveur d’application JEE. ✓ Il prend donc en charge la création d’objets et la mise en relation d’objets par l’intermédiaire d’un fichier de configuration qui décrit les objets à fabriquer et les relations de dépendances entre ces objets. ✓ Il permet de séparer le code métier du code technique. ✓ Spring s’appuie principalement sur l’intégration de trois concepts clés : ➔ l’inversion de contrôle ou injection de dépendance (IoC). ➔ la programmation orientée aspect (AOP). ➔ une couche d’abstraction.
  • 80. La framework Spring ✓ Spring est modulaire , permettant de choisir les modules appropriés à votre application, sans être obligé d’utiliser le reste. ✓ Spring Framework fournit plus de 20 modules qui peuvent être utilisé dans les applications.
  • 81. 1- Spring IOC 2- Spring MVC
  • 82. Spring IOC (Inversion Of Control)
  • 84. Rappels de quelque principes de conception ● Une application qui n’évolue pas meurt. ● Une application doit être fermée à la modification et ouverte à l’extension. ● Une application doit s’adapter aux changements ● Efforcez-vous à coupler faiblement vos classes. ● Programmer une interface et non une implémentation ● Etc..
  • 86. Couplage fort ➔ Quand une classe A est lié à une classe B, on dit que la classe A est fortement couplée à la classe B. ➔ La classe A ne peut fonctionner qu’en présence de la classe B. ➔ Si une nouvelle version de la classe B (soit B2), est crée, on est obligé de modifier dans la classe A. ➔ Modifier une classe implique: ◆ Il faut disposer du code source. ◆ Il faut recompiler, déployer et distribuer la nouvelle application aux clients. ◆ Ce qui engendre un cauchemar au niveau de la maintenance de l’application Nous allons voir que nous pourrons faire mieux en utilisant le couplage faible.
  • 87. Couplage faible ➔ Pour utiliser le couplage faible, nous devons utiliser les interfaces. ➔ Considérons une classe A qui implémente une interface IA, et une classe B qui implémente une interface IB. ➔ Si la classe A est liée à l’interface IB par une association, on dit que le classe A et la classe B sont liées par un couplage faible. ➔ Avec le couplage faible, nous pourrons créer des application fermée à la modification et ouvertes à l’extension.
  • 88.
  • 89. Injection des dépendances Injection par instanciation statique :
  • 90. Injection des dépendances Injection Injection par instanciation dynamique par réflexion : Fichier texte de configuration : config.txt ● ext.DaoImp ● metier.MetierImpl
  • 91. Injection des dépendances avec Spring. ➔ L’injection des dépendance, ou l’inversion de contrôle est un concept qui intervient généralement au début de l’exécution de l’application. ➔ Spring IOC commence par lire un fichier XML qui déclare quelles sont différentes classes à instancier et d’assurer les dépendances entre les différentes instances. ➔ Quand on a besoin d’intégrer une nouvelle implémentation à une application, il suffirait de la déclarer dans le fichier xml de beans spring.
  • 92. Injection des dépendances dans une app java standard
  • 93. Injection des dépendances dans une app java standard
  • 94. Injection des dépendances dans une app web ➔ L’injection Dans une application web, SpringIOC est appelé au démarrage du serveur en déclarant le listener ContextLoaderListener dans le fichier web.xml
  • 95. ➔ Dans cette déclaration, CotextLoaderListener est appelé par Tomcat au moment du démarrage de l’application. ➔ Ce listener cherchera le fichier de beans spring « spring-beans.xml » stocké dans le dossier WEB-INF. ce qui permet de faire l’injection des dépendances entre MetierImpl et DaoImpl.
  • 96. Spring MVC (Model View Controller)
  • 100. Un exemple de Controleur Spring MVC
  • 101. Un exemple de Vue JSP
  • 106. Introduction ➔ Travailler dans les deux univers que sont l'orienté objet et la base de données relationnelle peut être lourd et consommateur en temps dans le monde de l'entreprise d'aujourd'hui. ➔ Hibernate est un outil de mapping objet/relationnel pour le monde Java. ➔ Le terme mapping objet/relationnel (ORM) décrit la technique consistant à faire le lien entre la représentation objet des données et sa représentation relationnelle basée sur un schéma SQL.
  • 107. Le but de Hibernate ➔ Le but d'Hibernate est de libérer le développeur de 95 pourcent des tâches de programmation liées à la persistance des données communes. ➔ Hibernate assure la portabilité de votre application si vous changer de SGBD. ➔ Hibernate propose au développeur des méthodes d’accès aux bases de données plus efficace ce qui devrait rassurer les développeurs.
  • 109. Mapping Objet Relationnel des entités ➔ Il existe deux moyens pour mapper les entités : ◆ Créer des fichier XML de mapping ◆ Utiliser les Annotations JPA ➔ I 'utilisation des annotations JPA laisse votre code indépendant de Hibernate. ➔ La création des fichiers XML de mapping a l’avantage de séparer le code java du mapping objet relationnel. ➔ Dans cette formation, nous allons utiliser les annotations JPA
  • 110. Quelques annotations JPA de Mapping des Entités
  • 111. Mapping des entités en utilisant les annotations JPA
  • 112. Maven
  • 113. Maven ➔ Maven, géré par l'organisation Apache Software Foundation. (Jakarta Project), est un outil pour la gestion et l'automatisation de production des projets logiciels Java en général et Java EE en particulier.
  • 114. Maven L'objectif recherché est de: ◆ produire un logiciel à partir de ses sources, ◆ en optimisant les tâches réalisées à cette fin ◆ et en garantissant le bon ordre de fabrication. ● Compiler, Tester, Contrôler, produire les packages livrables ● Publier la documentation et les rapports sur la qualité Apports : ◆ Simplification du processus de construction d’une application ◆ Fournit les bonnes pratique de développement ◆ Tend à uniformiser le processus de construction logiciel ◆ Vérifier la qualité du code ◆ Faciliter la maintenance d’un projet
  • 115. Maven : POM Maven utilise un paradigme connu sous le nom de Project Object Model (POM) afin de : ● Décrire un projet logiciel, ● Ses dépendances avec des modules externes ● et l'ordre à suivre pour sa production.
  • 117. Démonstration ✓ Cette démonstration permet de pratiquer les bases des développement web JEE en utilisant les Framework Spring et Hibernate. ✓ C'est une application qui permet de ajouter, supprimer, modifier et consulter des produits stockés dans une base de données MYSQL. ✓ Maven, JUnit ,SpringIOC ,SpringMVC , JPA, Hibernate
  • 122. Démonstration ✓ Création d’un projet Spring. ✓ Implémentation des entités. ✓ Mapping des entités en utilisant les annotations JPA. ✓ Configuration de Hibernate “persistence.xml”. ✓ Verifier la génération des tables “JUnit”. ✓ Implémentation de la couche Metier et la couche Dao. ✓ Configuration JPA avec Spring IOC ✓ Verifier les services “JUnit”. ✓ Implémentation de la couche Web
  • 123. Mapping des entités en utilisant les annotations JPA <!-- Hibernate--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>3.6.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.1.0.Final</version> </dependency> <!-- MySQL Connector--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency>
  • 124. Configuration de Hibernate “persistence.xml” <persistence-unit name="UP_EBOUTIQUE" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> </properties> </persistence-unit>
  • 125. Configuration JPA avec Spring IOC
  • 127. Configuration JPA avec Spring IOC <bean id="dao" class="net.youssfi.eboutique.dao.BoutiqueDaoImpl"></bean> <bean id="metier" class="net.youssfi.eboutique.metier.BoutiqueMetierImpl"> <property name="dao" ref="dao"></property> </bean>
  • 128. <bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager"> <property name="defaultDataSource" ref="datasource"></property> <property name="persistenceXmlLocations"> <list> <value>classpath*:META-INF/persistence.xml</value> </list> </property> </bean> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitManager" ref="persistenceUnitManager"></property> <property name="persistenceUnitName" value="UP_EBOUTIQUE"></property> </bean> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"></property> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> <context:annotation-config></context:annotation-config> </beans>
  • 130. Merci! Sabri Bouchlema Elève ingénieur en génie logiciel Jcertif Student Ambassador