Title: Adaptabilit dynamique des services dans JOnAS Java Open Application Server
1Adaptabilité dynamique des services dans
JOnAS(Java Open Application Server)
Zahi JARIR Encadre Pr. Thomas LEDOUX
2Introduction
- Diversité des plates-formes dexécution.
- Changement du contexte d exécution des
applications. - Objectif
- Mettre en place une infrastructure dynamiquement
adaptable.
3Infrastructure pour middleware adaptable
- Capable d adapter les applications à des
conditions changeantes d exécution - Repose sur un MOP de type runtime RAM.
- Séparation du code fonctionnel / services non
fonctionnels - Modifier dynamiquement les associations.
- Politiques d adaptations écrites en XML.
- Quand effectuer une configuration à la volée ?
- Comment la réaliser?
- Observation de lenvironnement et du système
lui-même. - Décision de déclencher une adaptation
- Action pour modifier le système.
- Moteur d adaptation
- Attacher / Détacher / Reconfigurer dynamiquement
des services non-fonctionnels aux composants
fonctionnels de l application.
4Architecture
Politiques dadaptation
Services non-fonctionnels
Moteur dadaptation
Composants fonctionnels
Notify
Notify
Moniteurs
Ressources physiques
5Etude dAdaptabilité dynamique des services dans
Jonas
- Besoin dadapter les services aux profit des
applications EJB selon les changements dans leurs
contextes dexécution - Emploi statique des fichiers prédéfinis dans
Jonas (fichier de déploiement). - Besoin d adapter dynamiquement les services dans
Jonas. - Solution
- Mapper l infrastructure présentée vers Jonas.!
- Est ce possible? Si oui comment?
6Etude dAdaptabilité dynamique des services dans
JonasRaisons de pourquoi est ce possible ?
- Couplage lâche entre les principaux modules de
linfrastructure - Moteur dadaptation des politiques
- Infrastructure d observation des ressources
- Composants fonctionnels des applications
- Composants non-fonctionnels (services systèmes)
contrôlés par des méta-objets. - Possibilité de remplacer MOP RAM utilisé par le
container du serveur Jonas.
7Etude dAdaptabilité dynamique des services dans
JonasComment aboutir ?
- Mise en place dune indirection au niveau de
lobjet d interposition. - Intégrer linfrastructure d observation dans
Jonas - Intégrer le moteur d adaptation des politiques
dans Jonas.
8Mise en place dune indirection au niveau de
lobjet dInterposition
- Responsabilité dédié à lObjet dInterposition
doffrir les services prédéfinis par la
spécification des EJB. - Mise en uvre de ladaptabilité dynamique au
niveau de cet objet Interposition. - Créer un indirection à ce niveau vers un autre
objet DynamicComposite (créer par Objet
d Interposition) - Réification des appels métiers avant leurs
exécution par lobjet dInterposition et leurs
envois vers lobjet DynamicComposite. - DynamicComposite joue le rôle de compositeur
dynamique des services au sein de Jonas.
9Mise en place dune indirection au niveau de
lobjet dInterposition
- Mise en place dun objet DynamicComposite
- Non intégrer les mécanismes d adaptation au sein
de l objet d interposition - Déléguer à DynamicComposite ce rôle de
compositeur dynamique des services. - Créer par lobjet d interposition grâce au code
supplémentaire ajouter par GenIC.
10Mise en place dune indirection au niveau de
lobjet dInterposition (suite)
- Mise en place d une indirection au niveau de
l objet d interposition (EJB Object). - JOnAS est un open source
- Introduire une nouvelle balise ltJonasDynamicCompos
itegt au sein de jonas-ejb-jar.xml. - lt?xml version"1.0" encoding"ISO-8859-1"?gt
- ltjonas-ejb-jargt
- ltjonas-sessiongt
- ltejb-namegtOplt/ejb-namegt
- ltjndi-namegtOpHomelt/jndi-namegt
- ltjonas-dynamic-compositegttruelt/jonas-dynamic-
compositegt - lt/jonas-sessiongt
- ltjonas-sessiongt
- ltejb-namegtOpbislt/ejb-namegt
- ltjndi-namegtOpbisHomelt/jndi-namegt
- ltjonas-dynamic-compositegtfalselt/jonas-dynamic
-compositegt - lt/jonas-sessiongt
- lt/jonas-ejb-jargt
11Mise en place dune indirection au niveau de
lobjet dInterposition (suite)
- Modifier la DTD jonas-ejb-jar.dtd.
- ......
- lt!ELEMENT JOnAS-entity (ejb-name, jndi-name,
JOnAS-dynamic-composite?, JOnAS-resource,
JOnAS-resource-env, JOnAS-ejb-ref,
is-modified-method-name?, passivation-timeout?,
jdbc-mapping?)gt - lt!ELEMENT JOnAS-dynamic-composite (PCDATA)gt
- ........
- lt!ELEMENT JOnAS-session (ejb-name, jndi-name,
JOnAS-dynamic-composite?, JOnAS-resource,
JOnAS-resource-env, JOnAS-ejb-ref,
session-timeout?)gt - .......
12Mise en place dune indirection au niveau de
lobjet dInterposition (suite)
- Modifier les classes parseurs associées à cette
nouvelle balise (org.objectweb.jonas-ejb.deploymen
t.xml)
13Mise en place dune indirection au niveau de
lobjet dInterposition (suite)
- Modifier les classes mémoire des informations
parsées (org.objectweb.jonas-ejb.deployment.api)
utiliser par GenIC (Generate Interposition
Classes) générateur du container associé au bean
(BeanDesc, SessionDesc et EntityDesc). - Modifier les classes utilisées par GenIC afin
dajouter du code supplémentaire associé à cette
indirection (GenICRemote, GenICSessionRemote,
GenICEntityRemote) - Modification de lappel des méthodes métiers
standard - Exemple
- eb.buy(p1).
- Par le code suivant
- Object args new Object new Integer(p1)
- java.lang.reflect.Method metheb.getClass().getMe
thod("buy", new ClassInteger.TYPE ) - dynamicComposite.execute(eb,meth,args)
14Intégrer le moteur dAdaptation des politiques
- Ajouter un service Jonas appelé LoadPolicies
- Ajouter ce service dans Jonas.properties
- Jonas.services LoadPolicies, jmx,security,.
- Jonas.service.LoadPolicies.class proto.LoadPolicie
s - Responsable de charger tous les politiques
- Services.xml liste des services fournis.
- ltservicesgt
- ltservice name"misc.trace"/gt
- ltservice name"servicelog"/gt
- ltprovider class"proto.servicelib.SimpleTracePr
ovider"/gt - ltprovider class"proto.servicelib.ServiceLog"/gt
- lt/servicesgt
15Intégrer le moteur dAdaptation des politiques
(suite)
- System.xml
- politique de bas niveau
- Définition des règles d adaptation (Quels
services doivent être utilisés et avec quels
paramètres en fct des conditions
environnementales) Condition --gt Action. - ltrulegt
- ltwhengt
- ltless-thangt
- ltproperty-value name"/system/network.bandwidth
"/gt - ltnumber value"40000"/gt
- lt/less-thangt
- lt/whengt
- ltensuregt
- ltattached service"misc.trace" role"main"gt
- ltparameter name"prefix" value"TRACE"/gt
- lt/attachedgt
- lt/ensuregt
- lt/rulegt
16Intégrer le moteur dAdaptation des politiques
(suite)
- Application.xml
- Niveau d abstraction élevé.
- Description comment vont être appliquées les
politiques systèmes et à quels composants. - ltgroup name"groupbean1"gt
- ltselect from"all"gt
- ltequalsgt
- ltproperty-value name"className"/gt
- ltstring value"sb.OpBean"/gt
- lt/equalsgt
- lt/selectgt
- ltbind policy"tracer"/gt
- lt/groupgt
- Intégrer lobjet DynamicComposite au sein du
groupe adéquat selon la politique applicative.
17Etude de l adaptabilité dynamique des services
dans JOnAS
EJB Server
EJB Container
Home interface
Entreprise Java Bean
DynamicComposite
Remote interface
Service Maison
Transaction
Management
Security
Naming
JMS
Database
LoadPolicies
Service Maison
Services.xml System.xml Application.xml
Services
Sondes
Ressources Physiques
18Conclusion Perspectives
- Infrastructure capable dadapter dynamiquement
les services dans Jonas. - Conjugaison de deux richesses
- Infrastructure pour middleware adaptable
- plate-forme Jonas à base de composants beans
- Se pencher sur lutilisation des services
prédéfinies de Jonas