les ejb samir azzouz [email protected] Équipe objectweb inria rhône alpes

46
Les EJB Samir AZZOUZ [email protected] Équipe ObjectWeb INRIA Rhône Alpes

Upload: christophe-bardet

Post on 04-Apr-2015

112 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les EJB

Samir [email protected]

Équipe ObjectWebINRIA Rhône Alpes

Page 2: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 2

IntroductionIntroduction• Les applications monolithique

– Pas de réutilisation des modèles de données– Pas de réutilisation des modèles de traitements

• Les applications C/S (au sens large)– Réutilisation des modèles de données– Pas de réutilisation des modèles de traitement

• Les applications à base de middleware– Réutilisation des modèles de données et de

traitements– Notion de composants serveurs

Page 3: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les serveurs d'applications

Page 4: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 4

Architectures à Objet DistribuésArchitectures à Objet Distribués

Application 1

Application 2

MiddleWare

Services Métiers

Services d'infrastructure

Page 5: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 5

Serveur de composants de baseServeur de composants de base

Application 1

Application 2

Services Métiers

Services standard d'infrastructure

jdbc

jts

version

cycle vie

Page 6: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 6

Serveur de composants intégréServeur de composants intégré

Application 1

Application 2

container

jdbc jts version cycle vie

Composants Métiers

infrastructure

Logique métier

Service d'infrastructure de base

Gestion automatisée

Page 7: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 7

Services du container d'EJBServices du container d'EJB• Services internes

– Gestion de la charge du serveur • (cycle de vie, accès client, passivation...)

– Service de nommage– Gestion des accès aux objets métiers

• Services externes– Gestion du mapping sur BD relationnelle– Gestion des transactions– Gestion des échanges de messages

Page 8: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 8

Serveur Web dynamiqueServeur Web dynamique

Application 1

Application 2

Serveur Web

Page 9: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 9

Serveur Web dynamiqueServeur Web dynamique

Application 1

Application 2

Serveur Web

CGI

CGI

Page 10: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 10

Serveur Web dynamiqueServeur Web dynamique

Application 1

Application 2

Serveur Web

Php

LiveWire

Page 11: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 11

Serveur Web dynamique (Servlets / JSP)Serveur Web dynamique (Servlets / JSP)

Application 1

Application 2

Serveur Web

Servlets

Servlets

Page 12: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 12

Services du container de pages WebServices du container de pages Web• Servlet / JSP• Services internes

– Gestion de la charge du serveur • cycle de vie

– Gestion des autorisations d'accès• Services externes

– API Java

Page 13: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 13

Un serveur d'applicationUn serveur d'application• Application Java• Hébergeant :

– Des containers • Pages Web• Composants Métier (EJB)

– Des services• Nommage• Base de données/Mapping sur Base• Moniteurs transactionnels• Déploiement ...

– Des API sur les services• JDBC/JTS/JMS...

Page 14: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 14

The J2EE ArchitectureThe J2EE ArchitectureApplet container

Applet

J2SE

Application

Client Container

J2SE

ApplicationClient

JMS

JND

I

RM

I/IIOP

JDB

C

Web container EJB container

ServletJSP

JMS

JND

I

JTA

Java Mail

RM

I/IIOP

JDB

C

JAF

J2SE J2SE

JMS

JND

I

JTA

Java Mail

RM

I/IIOP

JDB

C

JAF

EJB

Databases

http/ssl

rmi/ssl

Page 15: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 15

Les offres de serveur d'applicationsLes offres de serveur d'applications• Serveur d'application J2EE

– Weblogic BEA,WebSphere IBM, Iplanet Sun, Oracle– WebObject (Jonhatan/Jonas) INRIA– Jboss (Free)

• Autres serveurs d'applications– Microsoft .net / DNA– Zope (Python)– Serveur CORBA (OrbixWeb)

Page 16: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les serveurs d'EJB

Page 17: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 17

Serveur de composants intégréServeur de composants intégré

Application 1

Application 2

container

jdbc jts versioncycle vie

Composants Métiers

infrastructureLogique métier

Service d'infrastructure de baseGestion automatisée

Page 18: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 18

Serveurs distribués Serveurs distribués

Appli 1

Appli 2

Container

jdbc

1

Services

Container

jdbc

2

Services

Page 19: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 19

Enterprise JavaBeansEnterprise JavaBeans• Enterprise Java Beans :

– Composants logiciels serveur• Objectif

– Standardiser le développement et le déploiement de composants serveurs écrits en Java

– Le développement ne se fait que sur l'interface métier de l'objet

– Le développeur ne prend en compte que la logique métier de l'EJB. Le reste est prise en charge par le containeur.

Page 20: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 20

Principe de conception des EJBPrincipe de conception des EJB

• Le modèle des EJB est fondé sur trois concepts pour la conception de systèmes distribués

– Approche de serveurs sans-états– Approche orientée session– Approche objet persistant

• Les spécifications EJB parlent de– Session Beans

• Stateless Session Bean• Statefull Session Bean

– Entity Beans• Container-Managed Persistence• Bean-Managed Persistence

Page 21: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 21

Le Bean "stateless Session"Le Bean "stateless Session"• Leurs comportements

– Fournissent un service pour un seul utilisateur– Ne maintiennent pas d'état par rapport au client– Ne survivent pas à un crash du serveur d'EJB– Sont plutôt destinés à vivre sur une courte

période– Deux instances d'un même bean « sans état » sont

identiques

Page 22: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 22

Les Bean "statefull Session"Les Bean "statefull Session"• Leurs comportements

– Interagissent d'une manière conversationnelle– Maintiennent un état sur le client connecté– Ne survivent pas à un crash du serveur d'EJB– Vivent rapidement– Une instance est hébergée par un seul thread– Une instance peut être partagée par plusieurs

clients

Page 23: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 23

Les EJB Entité (Entity EJB)Les EJB Entité (Entity EJB)

• Leurs comportement– Ils représentent les données persistantes– Ils survivent à un crash– Plusieurs clients peuvent utiliser des EJB qui

"pointent" sur les mêmes données– L'instance EJB contient une copie des données du

système de stockage

Page 24: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 24

Gestion de la persistanceGestion de la persistance

• Les attributs d'un objet doivent être déposés sur un support persistant

• Exemples de supports de persistance :– Sérialisation– Accès à une base sur le JDBC (mappage)

Clientid=98282nom=frenotadresse=34ville=villeurbanne

StockageMappage ?

Page 25: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 25

Partage d'EJB entityPartage d'EJB entity• Quand plusieurs clients partagent un EJB entity ils

– reçoivent leurs propres instance d'EJB– partagent les données sous-jacentes– n'ont pas à gérer la synchronisation sur les données

clientclient serveurcontainer

OMskell

client

client

OM

OM

Page 26: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 26

Type de persistanceType de persistance• Il y a deux mode de gestion de la persistance

– Container-Managed Persistence (CMP)– Bean-Managed Persistence (BMP)

container

OMCMP

1

OMBMP

Page 27: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 27

Rôle du développeur d'EJBRôle du développeur d'EJB• Définition des interface distantes

– L'interface « Remote » contient les opérations « métier » d'un EJB

• Définition de l'usine de fabrication des EJB– L'interface « Home » d'un EJB

– Est utilisée par les clients pour créer et/ou retirer un EJB– Fournit des méta informations sur l'EJB– Est partagée par tous les clients de l'EJB– Voit son stub d'invocation placé dans le service de nommage au

déploiement

• Définition du corps de l'EJB– Implantation concrète des services métier

Page 28: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 28

Le fonctionnement globalLe fonctionnement global

OM

Client

jndi

1

2

34

5

Page 29: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les optimisations

Page 30: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 30

Pooling d'objetsPooling d'objets

• Un serveur d'application peut créer un pool d'objets « nus » qui peuvent être utilisés quand des requêtes sont faites

EJB poolclient

client

Page 31: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 31

La passivationLa passivation

• La passivation est le fait de placer un EJB sur un support secondaire

• La passivation :– A lieu quand un EJB dépasse son idle-timeout– Permet à un serveur d'application de réclamer des

ressources– Placer une instance sérialisée de l'EJB dans son

support de stockage

Page 32: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 32

Pooling / Passivation sur WeblogicPooling / Passivation sur Weblogic

EJB cache

client

client

Free Pool

Les objets sont plac₫s dans le pool libre quand les clients en ont fini

Objets passiv₫s

Un EJB est passiv₫ s il a d₫pass₫ idleTimeoutSeconds

Ne peut pas exc₫der maxBeansInFreePool

Ne peut pas exc₫der maxBeansInCache

Un client re₤oit CacheFullException si le cache est plein et rien ne peut ₨tre passiv₫

Page 33: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 33

Distribution, Equilibrage de charge, Tolérance de pannes

Application et logique métier

Nommage, Sécurité, Cycle de vie, Accès concurrents, Transaction, Persistance EJB C

ontai

ner

Serv

eur d

 ’app

licati

on

Logique d'application

Logique métier

Accès données

Ett

Ett

SesSes DBMS

Ses

SesIHM

Page 34: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 34

Les rôles dans le monde EJBLes rôles dans le monde EJB

• Fournisseur de serveur d'application– Fournit le serveur intégré avec des services de base

• Fournisseur de container– Fournit les containeurs d'EJB

• Fournisseur d'EJB– Expert dans un domaine vertical; crée les composants EJB

• Développeur d'application– Assemble les applications à partir de composants EJB préfabriqués

• Spécialiste du déploiement– Déploie les applications– Maîtrise les principes d'architecture

Page 35: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 35

Cycle de développementCycle de développement

• Implantation de la base de données (opt.)• Implantation des EJB (SL/SF/Entity)• Implantation des JSP

Page 36: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 36

Cycle de développement d'un EJB sessionCycle de développement d'un EJB session

1) Définir les interfaces métierInterface Remote

2) Définir les méthodes de gestion du cycle de vieInterface Home

3) Définir les caractéristiques intrinsèques du bean dans un fichier de description

4) Définir les caractéristiques de déployement5) Déployer le bean6) Réaliser le(s) clients qui utilisent le service

Page 37: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 37

Interface MétierInterface Métier

Interface Remote de l'EJB fibonacci

package exemple.fibonacci;

public interface Fibonacci extends javax.ejb.EJBObject {

public int getFibonacciNumber(int n) throws java.rmi.RemoteException;

}

Page 38: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 38

Interface HomeInterface HomeInterface Home de l'EJB fibonaccipackage exemple.fibonacci;

import javax.ejb;

import java.rmi;

public interface FibonacciHome extends EJBHome {

public Fibonacci create() throws CreateException, RemoteException;

}

Page 39: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 39

Développement du BeanDéveloppement du Beanpackage exemple.fibonacci;

import java.rmi.*;

import javax.ejb.*;

public class FibonacciBean implements SessionBean {

public void ejbPassivate(){}

public void ejbActivate(){}

public void ejbRemove(){}

public void setSessionContext(SessionContext ctx){}

public void ejbCreate() {

System.out.println("Cet EJB Fibonacci est créé";

}

public int getFibonacciNumber(int n){...}

}

Page 40: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 40

Descripteur du BeanDescripteur du Bean

<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar>

<enterprise-beans>

<session>

<ejb-name>Fibonacci</ejb-name>

<home>exemple.fibonacci.FibonacciHome</home>

<remote>exemple.fibonacci.Fibonacci</remote>

<ejb-class> exemple.fibonacci.FibonacciBean</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

</session>

...

</enterprise-beans>

</ejb-jar>

Page 41: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 41

Descripteur du déploiementDescripteur du déploiement<?xml version="1.0"?>

<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN" "http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd" >

<weblogic-ejb-jar>

<weblogic-enterprise-bean>

<ejb-name>fibonacci</ejb-name>

<stateless-session-descriptor>

<pool><max-beans-in-free-pool>100</max-beans-in-free-pool></pool>

</stateless-session-descriptor>

<transaction-descriptor>

<trans-timeout-seconds>300</trans-timeout-seconds>

</transaction-descriptor>

<jndi-name>fibonnaci</jndi-name>

</weblogic-enterprise-bean>

</weblogic-ejb-jar>

Page 42: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 42

Déploiement du beanDéploiement du bean

• Eventuellement (pré-compilation)• Jar + cp

• Au déploiement – Inscription de l'Usine (interface Home) sur le

containeur– Dépôt du stub de manipulation de l'Usine sur le

service de nommage

Page 43: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 43

Développement d'un clientDéveloppement d'un clientpublic class Client{

public static void main(String [] argv){

try{

FibonacciHome home=(RobotHome)context.lookup("fibonaci");

Fibonacci jacques=home.create();

}catch(NamingException e){

}catch(CreationException e){

}catch(RemoteException e){}

}

}

Page 44: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 44

Développement d'un client JSPDéveloppement d'un client JSP<html><head><title> <%= pagetitle %> </title></head>

<h2><font color=#DB1260><%= pagetitle %></font></h2>

<%@ page import="edt.matiere.*"%>

<%!String pagetitle = "JSP emploi du temps : Les FaceAFaces";%>

<%try {

ctx = getInitialContext();

homeFib = (FibonnacciHome) ctx.lookup("fibonnaci");

uneSuite=homeFib.create();

out.println("fib(7)="+uneSuite.getFibonacciNumber(7));

}catch(Exception e){e.printStackTrace();

}

%>

</body></html>

Page 45: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Les Web Services 45

Points fortsPoints forts• Notion de container

– Robustesse, standardisation, évolution• Interface de développement standardisées

– Pas / Peu de phase de prise en main• Automatisation de nombreuses tâches

– Gestion de la persistance, transactions…• Intégration à l'API java• Marché explosant

Page 46: Les EJB Samir AZZOUZ samir.azzouz@planet.tn Équipe ObjectWeb INRIA Rhône Alpes

Fin Partie x