Java EE - PowerPoint PPT Presentation

About This Presentation
Title:

Java EE

Description:

Title: J2EE - Introduction Author: Victor Hugo Last modified by: Dell Created Date: 10/28/2002 9:01:41 AM Document presentation format: Affichage l' cran – PowerPoint PPT presentation

Number of Views:91
Avg rating:3.0/5.0
Slides: 61
Provided by: Victo116
Category:

less

Transcript and Presenter's Notes

Title: Java EE


1
Java EE
  • Java Enterprise Edition

2
Java EE - Objectifs
  • Faciliter le développement de nouvelles
    applications à base de composants
  • Intégration avec les systèmes dinformation
    existants
  • Support pour les applications critiques de
    lentreprise
  • Disponibilité, tolérance aux pannes, montée en
    charge, securité ...

3
Java EE - C est quoi?
  • http//java.sun.com/javaeeanciennement, J2EE
    (Java2 Enterprise Edition)
  • Spécifications
  • Modèle de programmation
  • Implémentation de référence
  • Suite(s) de tests
  • Label Java EE Sun (qualification de plateformes)

4
Offre commerciale
  • BEA WebLogic (haut de gamme)
  • IBM Websphere (no 1)
  • Sun Java System App Server
  • Borland Enterprise Server
  • Oracle Application Server
  • Macromedia jRun
  • SAP Web application server
  • Iona Orbix E2A

5
Offre open-source
  • JBoss (no 1 en nombre de déploiements)
  • ObjectWeb JOnAS(no 2, intégré à plusieurs distro
    Linux Entreprise)
  • Sun JS App Server (Platform Edition)
  • Apache Geronimo (démarrage fin 2003)
  • openEjb
  • ejBean

6
Java EE sous l œil de Darwin...
  • Standard en évolution depuis 1997
  • J2EE 1.0 à 1.4 en 2003, etc...
  • Au départ, applications Web n-tiers
  • Présentation (Servlets puis JSP), essentiellement
    HTTP
  • Logique métier EJB
  • Données JDBC
  • Puis infrastructure de support standard pour EAI
  • Facteurs de rationnalisation majeurs (JTA, JMS,
    JCA, Web Services)
  • Evolution de progiciels existants vers Java EE

7
Java EE - Architecture
WEB Container
Browser
Servlets JSPs
http
html
DB
rmi
Applets
rmi
EJBs
rmi
public static void main()
EIS
EJB Container
Java Application
Java EE Application Server
8
Architecture multi-tiers
  • Client
  • Léger (Web, browser)
  • Lourd (Application java, Applet)
  • Architecture orientée service (Application
    répartie sans présentation)
  • Serveur d applications
  • Conteneur EJB logique métier
  • Services non fonctionnels
  • EIS ou Base de données

9
Un serveur Java EE
Source Bull/ObjectWeb (JOnAS)
JOnAS  Java EE  Server
RMI Calls
Web Container
EJB Container
Home interface
Enterprise Java Bean
Servlets
Remote interface
HTTP
JDBC Calls
HTML Client
Naming
Database
EJB
Transaction
Web
Ear
Management
...
10
Conteneur Web
  • ServletsCode java exécuté sur le
    serveurEquivalent du CGIGénération de contenu
    Web dynamique
  • JSP Java Server PagesMélange de HTML/XML et de
    code javaLibrairies d extension
    ( taglibs )Précompilation en servlet

11
RMI
  • Remote Method Invocation
  • Java seulement, mais passerelles
  •  RPC objet  (appels sur objets distants)
  • Service de nommage (RMI registry)
  • Sécurité paramétrable (SecurityManager)
  • Garbage Collection distribuée
  • Téléchargement de code
  • Fonctions avancées
  • Activation d objets persistants, Réplication

12
JNDI
  • Service de nommage / annuaire
  • Java Naming and Directory Interface
  • API accès aux annuaires
  • javax.naming
  •  Service Provider  par annuaire cible (LDAP,
    NIS, RMI registry)
  • Utilisation avec les EJB
  • Accès à l interface  home  pour initialiser
  • Accès à diverses ressources (UserTransaction,
    Queues JMS, DataSources)

13
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

14
API JavaEE de transactions JTA
  • Java Transaction API
  • Package javax.transaction
  • TransactionManager begin(), commit(),
    rollback()
  • Transaction commit(), rollback(),
    enlistResource(XAResource), registerSynchronisatio
    n(Synchronization) ...
  • Synchronization beforeCompletion(),
    afterCompletion(commit rollback)

15
JTA Participants
  • XAResource
  • Conformes à la spécification XA
  • Enregistrement avec transaction.enlistResource()
  • Synchronization
  • Pour les ressources  non transactionnelles 
    (EAI)
  • Participant averti des frontières de transaction
  • enregistrement transaction.registerSynchronizati
    on()
  • beforeCompletion() équivaut à prepare()
  • afterCompletion(état commit rollback)
    équivaut à commit rollback

16
API XA de JavaEE
  • Package javax.transaction.xa
  • XAResource (prepare(), commit(), rollback()...
  • Xid (identifiant de transaction XA)
  • Package javax.sql
  • Extension de JDBC (bases de données)
  • XADataSource (getXAConnection())
  • XAConnection (PooledConnection, avec
    getConnection() et getXAResource())

17
JMX
  • Java Management eXtensions
  • API unique pour applications de management
  • Mbeans avec accesseurs get/set
  • Typage faible, attributs nommés
  • Serveur JMX
  • Enregistrement des Mbeans
  • Les applis d administration dialoguent avec le
    serveur JMX
  • Instrumenter un composant
  • Fournir un ou des Mbeans
  • Les enregistrer auprès du serveur JMX

18
JMX Exemple d un serveur JavaEE
Source ObjectWeb JOnAS
EJB Container
WEB Container
Admin Servlets
EJBs
..
Java EE Server
19
EJB Architecture
  • JavaBeans pour l Enterprise
  • Pas des JavaBeans (pas de représentation
    graphique)
  • Logique métier
  • Sappuie sur Java SE et les APIs de Java EE
  • JNDI, JTA/JTS, JDBC, JMS , JAAS
  • Gestion déclarative (personnalisation par
    annotations ou sans toucher au code source)
  • Portable sur les différents conteneurs EJB

20
EJB Gamme de services implicites
  • Gestion du cycle de vie
  • Gestion de létat
  • Sécurité
  • Transactions
  • Persistance
  • Localisation des composants transparente
  • (comparable à objets distribués CORBA)
  • Répartition de charge, pooling
  • gt Le développeur se focalise sur les aspects
    métier

21
EJB 2.0
Home
Client
Logique métier Callbacks icnew
InitialContext() ds (DataSource)
ic.lookup( javacomp/env/jdbc/MyDS)
Composant
Conteneur EJB
22
EJB 3
Client
Logique métier Annotations déploiement EJB3
Callbacks conteneur
BusinessInterface
Conteneur EJB
Simplification 1 classe, 1 ou 2 interfaces-
Linterface Home (cycle de vie) disparaît Le
descripteur de déploiement devient facultatif-
Remplacé par des annotations java dans le bean-
Si présent tout de même, priorité au DD sur les
annotations
23
EJB Interface métier
  • Remote (RMI / IIOP) ou Local
  • Vue client de l EJB
  • Declare les méthodes métier
  • Implementée par les outils intégrés à la
    plateforme EJB - au moment du déploiement

24
Exemple interface métier
  • package facturationpublic interface
    Facturation void init( ) void
    creerFacture(String numfact, double montant)
  • Facture getFacture(String numfact) //

25
EJB Implémentation du Bean
  • Implémente les méthodes de linterface métier
  • Peut hériter dun autre EJB, ou dun POJO
  • Spécifie ses caractéristiques de déploiement par
    annotations
  • Type de bean
  • Comportement transactions, sécurité,
    persistance
  • Callbacks conteneur

26
Exemple Implém. de Bean
  • package facturation_at_Stateful_at_Remote(Facturati
    on.class)public class FacturationBean implements
    Facturation void init( ) //
    Facture getFacture(String numfact) //
    //

27
EJB Code client
  • Context ctx new InitialContext()
  • // appel JNDI pour obtenir une référence
  • //à linterface
  • Facturation fact (Facturation)ctx.lookup(
  • facturation.Facturation)
  • // appel méthode métier
  • Facture f fact.getFacture(numfact)

28
EJB Entité
  • Représente des données dans la base de données
  • Container-Managed Persistence (CMP) or
    Bean-Managed Persistence (BMP)
  • En mode CMP, le conteneur EJB gère la persistance
    du bean (pas daccès BD dans le code).
  • En mode BMP, cest le développeur du Bean qui
    gère la persistance (par exemple, JDBC, JDO ).

29
EJB Bean Session
  • Gestion des interactions entre beans entité ou
    session, accès aux ressources, réalisation
    dactions sur demande du client
  • Objets métier non persistants
  • Stateful ou Stateless - maintient ou pas un état
    interne en mémoire
  • gt Un Bean Stateful encapsule la logique métier
    et létat specifiques à un client

30
EJB Message Driven Bean
  • Composant asynchrone
  • Execution sur réception d un message JMS
  • Méthode onMessage()
  • Appels à d autres beans, etc
  • Descripteur de déploiement
  • Associations Bean / ressource JMS
  • Ressources JMS (ex. Queue ou Topic)

31
Message Driven Bean exemple
BD
Appli ClientJMS
JNDI
Serveur EJB
32
Message Driven Bean exemple (2)
public class StockHandlerBean implements
MessageDrivenBean, MessageListener public
void onMessage(Message message) ... sh
(StockHome)initialContext.lookup("javacomp/env/
ejb/Stock") queue (Queue)initialContext.loo
kup("javacomp/env/jms/Orders")
MapMessage msg (MapMessage)message pid
msg.getString("ProductId") qty
msg.getString( "Quantity") cid
msg.getString("CustomerId") Stock stock
sh.findByPrimaryKey(pid) stock.decreaseQuanti
ty(qty) qs session.createSender(queue)
TextMessage tm session.createTextMessage()
String m "For CustomerId "cid"
ProductId "pid" Quantity "qty
tm.setText(m) qs.send(tm) ...
33
EJB Configuration Déploiement
  • Interface(s) (Remote et/ou Local), classe qui
    implémente le Bean
  • Déploiement annotations dans le bean, et/ou
    descripteur de déploiement (fichier XML)
  • ltejb-jargt
  • Description du Bean (Entity ou Session, ...)
  • Ressources (Base de données,...)
  • Securité permissions et roles
  • Persistance (BMP, CMP)
  • Attributs transactionnels
  • lt/ejb-jargt
  • Priorité au descripteur de déploiement sur les
    annotations.
  • gt Utilisé par lassembleur dapplication et par
    le conteneur EJB au moment du déploiement

34
Descripteur de déploiement (optionnel)
 Indirection  Lien entre interfaces
et implémentation
Bean Session
ltenterprise-beansgt ltsessiongt
ltdescriptiongtEJB Facturationlt/descriptiongt
ltejb-namegtFacturationlt/ejb-namegt
ltbusiness-remotegtfacturation.Facturationlt/business
-remotegt ltejb-classgtfacturation.FacturationBea
nlt/ejb-classgt ltsession-typegtStatefullt/session-
typegt lttransaction-typegtContainerlt/transaction
-typegt ltresource-refgt
ltres-ref-namegtjdbc/facturationDBlt/res-ref-namegt
ltres-typegtjavax.sql.DataSourcelt/res-typegt
ltres-authgtContainerlt/res-authgt
lt/resource-refgt lt/sessiongtlt/enterprise-beansgt
Ressource ici, BD
35
Ressources et JNDI
  • Ressources déclarées dans le descripteur de
    déploiement (accès via JNDI)
  • Convention de nommage
  • Noms préfixés par le type de ressource référencée
    (ejb, jms, jdbc, mail, url)
  • Exemple
  • fh (FournisseurHome)initialContext.lookup("java
    comp/env/ejb/Fournisseur")
  • bd (DataSource)initialContext.lookup("javacomp
    /env/jdbc/Compta")

36
Optimisations par le conteneur
  • Stateless Session Bean Sans état
  • Pool d instances
  • Le serveur peut y accéder via un pool de threads
  • Stateful session et Entity beans
  • Activation / Passivation (appel par le container
    des callbacks annotées _at_ejbPostActivate après
    activation / _at_ejbPrePassivate avant passivation)
  • Gestion possible des callbacks par un Callback
    Listener (annotation _at_CallbackListener dans le
    bean pour spécifier la classe chargée de gérer
    les callbacks conteneur).

37
Persistance EJB3
  • API de persistance JPA
  • Mapping objet / relationnel
  • Pluggable sur différents frameworks de
    persistance (JDO, Hibernate, etc) via un
     persistence manager .
  • Persistance gérée par le conteneur
  • Gestion déclarative (annotations)
  • Classe persistante  entité  ( _at_Entity )
  • Champs persistants variables dinstance
    ( accessFIELD ) ou propriétés avec méthodes
    get/set ( accessPROPERTY ).
  • Relations entre instances d entités (cardinalité
    1-1, 1-N, N-P, uni ou bi-directionnel)
  • EJB-QL
  • Basé sur SQL92 ( select from where )
  • Méthodes associées à des requêtes avec paramètres

38
Exemple
  • _at_Entity
  • public class Facture
  • _at_Id
  • private String numfact
  • private double montant
  • private Client client
  • public Facture() // Constructeur par défaut
    (obligatoire pour Entity bean)
  • public Facture(String numfact) this.numfact
    numfact
  • public void setMontant(double montant)
    this.montant montant
  • public double getMontant( ) return montant
  • _at_ManyToOne
  • _at_JoinColumn (name RefClient)
  • public Client getClient( ) return client
  • public void setClient(Client client)
    this.client client

39
Exemple (2)
  • _at_Stateful
  • _at_Remote(Facturation.class)
  • public class FacturationBean implements
    Facturation
  • _at_PersistenceContextprivate EntityManager
    entityManager null
  • public void creerFacture(String numfact, double
    montant)
  • Facture fact new Facture(numfact)
  • fact.setMontant(montant)
  • entityManager.persist(fact)
  • public Facture getFacture(String numfact)
  • return entityManager.find(Facture.class,
    numfact)

40
EJB-QL
  • Dialecte proche de SQL92
  •  select from where  sur des objets
  • Possibilité de requêtes paramétrées
  • Utilisation directe, ou requêtes nommées
    (_at_NamedQuery)
  • Exemple
  • public ListltFacturegt listFactures( ) Query
    qry entityManager.createQuery(  select f
    from Facture f ) return qry.getResultList()

41
Callbacks cycle de vie
  • Appelées par le  persistence manager 
  • Annotations _at_PrePersist, _at_PostPersist,
    _at_PreRemove, _at_PostRemove, _at_PreUpdate, _at_PostUpdate,
    _at_PreLoad
  • Exemple_at_PreRemovevoid preRemove()
    System.out.println( Avant suppression )

42
Définition fine du mapping O/R
  • Table relationnelle annotation _at_Table
  • Configuration du mapping O/R dans le descripteur
    de déploiement de persistance (persistence.xml)
  • Stratégie de mapping pour lhéritage attribut
    strategy de lannotation _at_Inheritance
  • ONLY_ONE_TABLE 1 table pour 1 hiérarchie de
    classes (les colonnes représentent tous les
    champs persistants possibles), _at_DiscriminatorColum
    n et attribut DiscriminatorValue de _at_Inheritance
  • TABLE_PER_CLASS 1 table par classe
  • JOINED Table spécifique pour les champs dune
    classe fille, jointure avec celle de la classe
    parente.

43
Transactions
  • Applicable aux 3 profils de composants
  • Session, Entité, Message driven
  • Limitation pour le MessageDriven (attributs
     Required  ou  NotSupported  seulement).
  • Gestion explicite
  • Utilisation de javax.transaction.UserTransaction
    (JTA)
  • Contrôle de la transaction (timeout,
     rollbackOnly )
  • ExempleUserTransaction utx
    (UserTransaction)ctx.lookup( javacomp/UserTransa
    ction )utx.begin()utx.commit()

44
Gestion déclarative des transactions
  • Au niveau de la méthode du bean ! (démarcation)
  • NotSupported
  • Si transaction courante, elle est suspendue
  • Required
  • Si pas de transaction, nouvelle transaction
  • RequiresNew
  • Nouvelle transaction (si tx courante, suspendue)
  • Mandatory
  • Exception si pas de transaction courante
  • Supports
  • Si transaction courante, l utiliser
  • Never
  • Exception si transaction courante

45
Annotations Gestion déclarative des transactions
  • _at_TransactionManagement(javax.ejb.TransactionManage
    mentType.CONTAINER)
  • public class FacturationBean implements
    Facturation
  • _at_TransactionAttribute(javax.ejb.TransactionAttribu
    teType.REQUIRED)
  • public void creerFacture( )
  • //

46
Descripteur de déploiement Gestion déclarative
des Transactions
ltassembly-descriptorgt ltcontainer-transactiongt
ltmethodgt ltejb-namegtFacturationlt/ejb-namegt
ltmethod-namegtlt/method-namegt lt/methodgt
lttrans-attributegtRequiredlt/trans-attributegt
lt/container-transactiongt ...lt/assembly-descripto
rgt
NotSupported Required RequiresNew Mandatory Suppor
ts Never
47
Gestion des évènements transactionnels (Session
Bean)
  • Interception par un EJB des évènements
    transactionnels (produits par le conteneur)
  • Implantation de javax.ejb.SessionSynchronization
  • Evènements (appelés par le conteneur)
  • afterBegin appelé après UserTransaction.begin
  • beforeCompletion appelé avant
    UserTransaction.commit
  • afterCompletion(true false) appelé après
    commit ou rollback

48
Descripteur de déploiement Sécurité
ltassembly-descriptorgt ... ltsecurity-rolegt
ltdescriptiongtPersonnel administratif de
gestionlt/descriptiongt ltrole-namegtadministratiflt/
role-namegt lt/security-rolegt ltmethod-permissiongt
ltrole-namegtadministratiflt/role-namegt
ltmethodgt ltejb-namegtFournisseurlt/ejb-namegt
ltmethod-namegtlt/method-namegt lt/methodgt
lt/method-permissiongt lt/ assembly-descriptorgt
Définition de rôle
Permissions accordées à un rôle
49
JCA
  • Java Connector Architecture
  • 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

50
Contrats Système
  • Interaction entre le SI et le serveur
    d applications
  • Gestion des connexions et pooling
  • Gestion des transactions (par le serveur
    d application et/ou le SI)
  • Sécurité (accès sécurisé au SI)

51
API clientes
  • Standard CCI (Common Client Interface)
  • Avantage API standard
  • Inconvénient trop général et peu compréhensible
    (pas de  sens  métier), implémentation
    facultative.
  • Spécifique API spécifique au SI, fournie par le
     resource adapter 
  • Avantage API  métier 
  • Inconvénient spécifique au SI concerné, donc
    différente selon le connecteur...

52
Resource Adapter
  • Implémentation de l interfaçage avec le SI
  • Classes d interface
  • Librairies natives du SI
  • Descripteur de déploiement
  • Configuration du connecteur au sein du serveur
    d application
  • Classes d implémentation des interfaces standard
  • Fonctionnalités supportées ou non (transactions,
    sécurité)

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

54
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

55
Packaging
  • Application JavaEE (agrégation de différents
    tiers)
  • Fichier  .ear  descripteur  application.xml 
  • Tiers client
  • Web fichier  .war  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 

56
Persistance Transactions exemple
DB1
EB1
ConteneurEJB
no
cust
DB2
DD
server2
Admin client
EB2
ConteneurEJB
SrVlt
Conteneur WEB
admin
http
Web
Appli client
server3
server1
57
Répartition de charge notations
Un noeud (machine) qui héberge un ou plusieurs
serveurs
web
ejb
Un conteneur Web
Un conteneur EJB
Un serveur qui héberge un conteneur EJB
Un serveur qui héberge un conteneur Web
Un serveur qui héberge un conteneur Web et un
conteneur EJB
Un serveur Apache avec le module mod_jk
58
Répartition de charge scenarii (1)
Répartition du serveur JavaEE
Réparti(au sein d un même nœud)
Compact
Réparti
59
Répartition de charge scenarii (2)
(2)
(1)
(3)
(4)
60
Répartition de charge et clustering
Source ObjectWeb JOnAS
JOnAS EJB Container
Tomcat
JNDI
JOnAS EJB Container
Apache
DB
Tomcat
JNDI
Mod_jk
JOnAS EJB Container
Tomcat
JNDI
Write a Comment
User Comments (0)
About PowerShow.com