Vous êtes sur la page 1sur 23

Institut Supérieur de Gestion

Cours pour 3ème LFIG

Java Enterprise Edition


Introduction
Bayoudhi Chaouki

1
Java EE - Objectifs
Faciliter le développement de nouvelles applications à
base de composants
Intégration avec les systèmes d’information existants
Support pour les applications « critiques » de
l’entreprise
Disponibilité, tolérance aux pannes, montée en charge,
securité ...

2
Java EE : Historique
Un modèle en évolution depuis 1997
J2EE 1.0 à 1.4 en 2003, ...
Au départ, juste des applications n-tiers Web
Présentation (Servlets puis JSP), essentiellement HTTP
Logique métier : EJB
Données : JDBC
Puis Une infrastructure de support standard pour les
applications d’ entreprise.
Facteurs de rationalisation majeurs via plusieurs API (JTA,
JMS, JCA, Web Services).
Les progiciels existants ont évolué vers Java EE.
Un support pour développer des applications reparties et
distribuées.
3
Java EE - Historique
Anciennement appelé J2EE ( pour Java2
Enterprise Edition)
Java EE comme Java Entreprise Edition
C’est un Modèle de programmation
Sert à implémenter des applications web, des
applications distribuées, des services web,…
Le modèle adopte l’architecture multi-tiers

4
Architecture multi-tiers
Une application Java EE adopte une architecture N-tiers.
Tiers client qui peut être :
Client Léger (Web, browser)
Client Lourd (Application java, Applet…)
Une Architecture Orientée Service (SOA : une
application repartie)
Tiers Serveur d’applications
Conteneur EJB + logique métier
Services non fonctionnels
SIE ou Base de données

5
Application multi-tiers
Le Tier
Pages HTML La Machine
Client
Dynamiques du Client
L’application Web est
Pages JSP Le Tier décomposée en
Web Le serveur
java EE plusieurs parties.
d’application
Bean Le Tier Chaque partie est dite
Entreprise Metier Tiers
Le serveur de
Base de Le Tier Base de
données SIE données

SIE : Système Informatique de l’Entreprise


Java EE : Architecture
Browser Conteneur WEB Services
HTTP Servlets
JSPs
html

Applets RMI BD
RMI
EJBs

RMI
public
SIE
static void
main(…) { Conteneur EJB

Application Java Serveur d’application Java EE

7
Java EE - Architecture
• RMI : Remote Methode Invocation
• EJB : Entreprise Java Beans
• JSP : Java Server Page
• JNDI : Java Naming and Directory Interface
• JMS : Java Messaging Service
• JTA : Java Transaction API
• JCA : Java Connector Architecture
• JMX : Java Management eXtensions
• JDBC : Java Data Base Connection
• SIE : Système Informatique de l’Entreprise

8
Serveurs JEE : Payants
Les noms de quelques serveurs commerciaux :
BEA WebLogic (haut de gamme)
IBM Websphere (Le n° 1)
Sun Java System App Server
Borland Enterprise Server
Oracle Application Server
Macromedia jRun
SAP Web application server
Iona Orbix E2A

9
Serveurs JEE :Open-source
Les noms de quelques serveurs open source :
JBoss (n°1 en nombre de déploiements)
ObjectWeb JOnAS(n° 2, intégré à plusieurs distribution
Linux Entreprise)
Sun JS App Server (Platform Edition)
Apache Tomcat
ejBean
GlassFish

10
Exemple d’un serveur Java EE
Source : Bull/ObjectWeb (JOnAS)
Client Java
Appel RMI JOnAS : un serveur « Java EE »

Conteneur Web Conteneur EJB

Interface Enterprise
locale Enterprise
Enterprise
Java Bean
Servlets Java Bean
Interface Java Bean
requête distante

HTTP

Base de données
Transaction

Nommage
Gestion
Appel JDBC

EJB
Web

HTML Client Base de


Ear données
...

Services

11
Conteneur Web
Conteneur : un environnement d’exécution Java EE
qui fournit certains services aux composants qu’il
héberge : gestion du cycle de vie, injection de
dépendances, …
Les composants hébergés sont :
Servlets :
Code java (une classe java) exécuté sur le serveur et
permettant la génération de contenu Web dynamique.
JSP: Java Server Pages
Mélange de HTML/XHML et de code java avec la
possibilité d’utilisation des librairies d’extension
(« taglibs ») comme JSTL.
Une page JSP est précompilé en servlet.
12
RMI
• RMI pour Remote Method Invocation
Il permet Les appels sur objets distants
Il présente un service de nommage (RMI
registry).
La sécurité est paramétrable via l’API
SecurityManager.
Un ramasse-miettes (garbage Collector)
Distribuée pour le nettoyage des objets
distants.

13
JNDI
Java Naming and Directory Interface : Service de
nommage ou annuaire
L’API responsable de l’accès aux annuaires :
javax.naming

Utilisable avec les EJBs (Entreprise Java Beans) :


Accès à l ’interface « home » pour l’initialisation
Accès à diverses ressources (UserTransaction, la
file d’attente JMS, DataSources…)
14
JMS
Java Messaging Service
JMS Provider : inclus dans J2EE
Transport synchrone ou asynchrone, Garantie de
livraison
« Messaging domains » point à point ou
« publish/subscribe »
Lien avec EJB : « message-driven bean »
Pour échanges asynchrones

15
JTA

• Java Transaction API : une API java pour


gérer les transactions de bases de données.
• Package javax.transaction
– TransactionManager : begin(), commit(),
rollback() …
– Synchronization : beforeCompletion(),
afterCompletion(commit | rollback)

16
JMX
Java Management eXtensions
API unique pour applications de management
Managed beans (Mbeans) avec accesseurs get/set
Typage faible, attributs nommés
Serveur JMX
Enregistrement des Mbeans
Les applications d ’administration dialoguent avec le
serveur JMX
Instrumenter un composant revient à
Fournir un ou des Mbeans
puis d’enregistrer ces Mbeans auprès du serveur JMX.

17
EJB: Architecture
JavaBeans pour l’Enterprise
Les EJBs reprerentent la logique métier
S’appuie sur Java SE et les APIs de Java EE :
JNDI, JTA/JTS, JDBC, JMS , JAAS
Gestion déclarative (personnalisation par
annotations)
Portable sur les différents conteneurs EJB

18
Rôles définis par la spec. EJB
Fournisseur de beans
Développeur qui crée les EJB
Assembleur d ’application
Crée l ’application par assemblage d ’EJB
Administrateur
Déploiement, sécurité, exploitation, montée en charge…
Analogue au rôle de DBA pour les BD

19
Exemple
@Entity //l’equivalant de create table
public class Livre {

@Id //clé primère


private String code;
@Column(length=10) //taille maximale de la colonne
private double prix;
@Column(nullable = false) //colonne ne pouvant pas être nulle
private String titre;
@Column(nullable = false)
private String auteur;

public Livre() { } // Constructeur par défaut (obligatoire pour Entity bean)


public Livre(String code, String titre, String auteur, double prix) { this.code =code;
this.titre=titre; this.auteur=auteur; this.prix=prix; }

public void setPrix(double prix) { this.prix = prix; }


public double getPrix( ) { return prix; }

....
}
20
JCA
JCA pour Java Connector Architecture
C’est un service permettant l’intégration avec les SI
d’entreprise (EIS)
Applications (ERP, Supply Chain…)
Middleware (gestionnaire de transactions…)
Connecteur composé de :
Contrats système
API cliente
Resource Adapter

21
Déploiement
Packaging en fichier .rar (archive)
Déployé par le serveur d ’application
Format jar avec organisation standard
Contient tous les éléments du connecteur
Descripteur de déploiement (.xml) dans le dossier
META-INF : configuration du connecteur

22
Packaging
Application JavaEE (agrégation de différents tiers)
Fichier « .ear » + descripteur « application.xml »
Tiers client
Web : fichier « .rar » + descripteur « web.xml »
Application : fichier « .jar » + descripteur « application-
client.xml » (lancement du main() de la classe spécifiée
dans le « manifest », attribut « Main-Class »)
Tiers EJB
Fichier « .jar » + descripteur « ejb-jar.xml »
Tiers « EIS » (connecteurs JCA)
Fichier « .rar » + descripteur « rar.xml »

23

Vous aimerez peut-être aussi