Plates-formes de déploiement et d’exécutiond’applications

chuckleelephantbutteΛογισμικό & κατασκευή λογ/κού

9 Ιουν 2012 (πριν από 5 χρόνια και 7 μήνες)

361 εμφανίσεις

Plates-formesdedéploiementetd’exécution
d’applications
St
´
ephaneFr
´
enot
CITI/ARES-INSALyon
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.1/63
Contexte

Explosiond’internet(24/24,7/7)

RévolutionJava(MV,Langage,Bibliothèque)

Emergeancedel’informatiqueubique(embarqué,
domotique,adHoc...)

==>Définitiondeplates-formespermettantla
gestionetl’exécutiongarantied’applicationspour
lesclients
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.2/63
Plan

Historique

Motivations

Lesplates-formesexistantes

Laprogrammationorientéecomposants

Conclusion
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.3/63
Origineduproblème:La
programmationsocket

Deuxmachinesdistantespeuventcommuniquer

Lesdeuxmachinescommuniquentselonun
protocoled’échange

Deuxprincipeslemodefluxlemodepacket
=>Programmationnon-fonctionnelle
==>Masquerlacoucheréseauauprogrammeur
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.4/63
Historique:Appeldistant

Masqueràunclientlalocalisationduservice

Notiond’interfacedeservice

Infrastructureneutredegestion:RPC,ORB,RMI
c
service
Impl
Interface
Resultatres=service.calcul(param);
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.5/63
Historique:CORBA2

CORBA:lebusd’interconnexion

Démonsdegestiondubus

Notiondeservicesdebase

Cyclededéveloppement

Lesservicessontaccessiblesdemanière
homogènesurlebus

Corbaesttoutàlafois(middleware,framework,
indépendant...)

Maiscelaresteunespécification...

Naissancedumiddleware

Composant:Unitéd’exécutiondécriteparson
interfacedansunlangageneutre

Services:CorbaServices,CorbaFacilities
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.6/63
Historique:CORBA2
Objets Développés
Spécifiques et non standardisés
Utilitaires Communs
Santé
Finance
Télécom
verticaux
horizontaux
IU
Gestion
information
Administration
Système
Gestion
des tâches
Nommage
Externalisation
Persistance
Cycle de vie
Evénement
Transactions
Propriétés
Relations
Collections
Temps
Sécurité d?accès
Versions
Négociateurs
Licences
Concurrence
d?accès
Common Object Request Broker Architecture (CORBA)
Serviceserv=CosNaming.lookup("Service");
Resres=t.calcul();
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.7/63
Historique:lesEJB

Unobjetdeservicedoitêtreidentifié(marké)

Iln’yapasquelecoderéseauquinesoitpasdu
codefonctionnel(sécurité,transaction,traces)

Uncomposantpeuintéragiravecdesservices
standards

Notiondedéploiementducomposantsurle
middleware
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.8/63
Historique:lesEJB
LesEJB:EnterpriseJavaBeans

Composantslogiciels(interfacededescription)
Familledecomposants(Entity,SessionSL/SF,
MessageDriven)
Uneusinepermetauclientd’obtenirlaréférence
auservice
ConteneurréaliseuneinterpositionClient/Service
Intégrationdelaphasededéploiement
Java/RMI
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.9/63
Historique:lesEJB
LesEJB:EnterpriseJavaBeans

Composantslogiciels(interfacededescription)

Familledecomposants(Entity,SessionSL/SF,
MessageDriven)

Uneusinepermetauclientd’obtenirlaréférence
auservice

ConteneurréaliseuneinterpositionClient/Service

Intégrationdelaphasededéploiement

Java/RMI
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.9/63
LesEJB

UncomposantEJB:Unitédepackaging
(déploiement+exécution)décritepar

Uneinterfacedeservice(RemoteInterface)

Uneinterfacedecycledeviepilotéeparle
conteneur(HomeInterface)

Undescripteurdedéploiementgénérique
(indépendantduconteneur)

Undescripteurdedéploiementspécifique
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.10/63
Leconteneur

Lesservicesduconteneurd’EJB

Passivation

MappingSGBDR

GestiondesTransactions

Sécurisationdesappels

Annuairepourretrouverunobjet

Invocationdistante

Lesservicesdéfinissentl’ensembledesappels
nonfonctionnelsd’uneapplication.

Laphasededéploiementmetenplacelesliaisons
entreuncomposantetlesservices
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.11/63
Creationd’EJB
jndi
conteneur EJB
client
1
2
persistance
nommage
mapping sgbd
transactions
3
ServiceHomeservHome=JNDI.lookup("ServiceHome");
Serviceserv=servHome.create();
Resultatres=serv.calcul();
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.12/63
Historique4/
LaJ2EE

Plate-formedeservicesdéfinieparSun

Conteneurs(EJB,WEB,Applets)

Reposesurl’APIJava

Intègreunensembledeservicesstandards
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.13/63
J2EE
Applet container
Applet
J2SE
Application
Client Container
J2SE
Application
Client
JM
S
JND
I
RMI/
IIOP
JDBC
Web container
EJB container
Servlet
JSP
JMS
JNDI
JTA
Java
Mail
RMI/
IIOP
JDB
C
JAF
J2SE
J2SE
JMS
JNDI
JTA
Java
Mail
RM
I/
IIO
P
JDBC
JAF
EJB
Databases
http/ssl
rmi/ssl
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.14/63
J2EE

Laplate-formenespécifiepascommentsont
exécutés/organiséslesservices

Laplate-formenepermetpasd’extensions

DépenddesspécificationsdeSun(JSR)
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.15/63
Motivationspouruneplate-formedeservices
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.16/63
Plate-formed’exécutiondeservices

Intégrationdenouveauxservices(mobilité,
adaptabilité...)

Optimisationdesservicesenfonctiondesbesoins,
etdel’environnementd’exécution

Efficacitéd’exécution

Gestiondynamiquedesservicesexécutés

Fédérationdeplate-formes
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.17/63
Intégrationd’unmoteurde
reconnaissancedelaparole

Intégrationd’unmoteurdereconnaissancedans
unserveurJ2EE

Interfacerlemoteuravecleconteneurd’EJB
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.18/63
Plates-formesd’exécutionetdedéploiement
deservices
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.19/63
Plates-formesd’exécutionde
services

Définirunservicespécifique(interface/composant)

Déployerleservice(nommage)

Piloterl’exécutionduservice(cycledevie)

Piloterleséchangesentreservices
(communication)

Plates-formes

JMX/JBoss:L’instrumentationréseauau
servicedelaJ2EE

OSGi:passerelledeservices

Avalon:unframeworkpourledéveloppement
deservices
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.20/63
JMX:JavaManagementeXtension
Standardpourinstrumenterdesressourcespilotables

uneAPIetunearchitecturepouraccéderet
contrôlerdesclassesJava

Instrumentation,AgentetManager

LescomposantsJMX

MBeanServer

MBeans(Standard,Dynamic,Model)

Notification

Adaptors

Connectors
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.21/63
JMX:MBeanServer

MBeanServer

GèrelecycledeviedesMBeans(creation,
enregistrement,suppression)

FournitdesservicesauxMBeans(nommage,
notification,relation,surveillance,timer)

MBean

Classeconcrête(service)

Elleimplanteuneextensionspécifiquede
l’interfaceMBean

Ellepresenteunconstructeurpublique
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.22/63
JMX:Vued’ensemble
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.23/63
JBoss:J2EE/JMX

JBossutiliseunnoyauJMXpourexécuterles
servicesdelaplate-formeJ2EE

Chaqueservicedelaplate-formeestunMBean,
répondantaumoinsàuneinterfaceimposéepar
JBoss

LecoeurdeJBossestunMBeanServer

LesservicesoffertsparJMXpermettentaux
servicesdemieuxfonctionner
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.24/63
OSGi

Passerelledeservice(ServiceGateway)

Périphériquequijouelerôledepointd’entrée
dansunenvironnementdetyperéseaulocal,
oùles"services"peuventêtredéployéspardes
fournisseursdeservices

Framework

Leconteneurquimetàdispositiondesservices
unenvironnementd’exécutionet
l’environnementquipermetdelespiloter

Service

Interfacejavaavecunesémantique
d’implantation
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.25/63
OSGi
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.26/63
Bundle

Unitéd’implantationetdedéploiementdes
servicesOSGi

UnearchivejarOSGipeutcontenir

Classesjava

Bibliothèquesjavaemballées

Librairiesdecodenatif

Unmanifestdedescriptionduservice

Lesbundlesenregistrentlesservicesdansle
framework

Lesbundlesnepeuventinteragiravecd’autres
bundlesqueparlanotiondeservice(POS)
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.27/63
Laspécification

Lebundle:Unitédepackaging(composant)

jar

manifest

package:{Import|Export}-Package

BundleActivator:Services/Package

service:{Import|Export}-Service

Status:installed,resolved,active,uninstalled,starting,
stopping
bundle
serviceIfc
serviceImpl
native
BundleActivator
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.28/63
Laspécification
Exempledemanifest:
Manifest-Version:1.0
Created-By:stephane.frenot@insa-lyon.fr
Bundle-NativeCode:\\
libinsertcard.so;osname=Linux;processor=x86
Import-Package:insa.device.pcmcia.device,\\
org.osgi.service.device;specification-version="2.1"
Bundle-ClassPath:.
Export-Package:insa.device.wlan.device;\\
specification-version="2.1"
Bundle-Activator:insa.device.pcmcia.driver.PcmciaDriverImpl

Lesservices

Evénements,Securité

Admin,ServiceTracker

Log,http

DeviceAccess
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.29/63
Cycledevied’unBundle
Installed
install
UnInstalled
Resolved
Starting
Stopping
Active
uninstall
uninstall
resolve
update
start
stop
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.30/63
Avalon
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.31/63
Avalon

ProjetJakarta(http://jakarta.apache.org)

Frameworkquipermetàdescomposantsde
différentestaillesd’êtrecréésetgérésparun
cycleviespécifique.

Toutestorganiséautourdeconteneursetde
composantsstandards

ApprochefortementguidéeparlesDP
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.32/63
Conceptsdedéveloppement

Inversionducontrole(IOC):Principequ’un
composantesttoujourspilotédel’extérieur.Toutle
cycledevied’uncomposantestgéréparlecode
quil’acréé.(notiondeconteneur)

Séparationdesobjectifs:Chaqueobjectifd’un
serviceestcapturédansuneinterfacespécifique.
Principesimilaireàlaprogrammationparaspects.

Programmationorientéecomposants:Chaque
composantprésenteuneinterfacede
fonctionnementetdescontratsspécifiquesautour
del’interface

Programmationorientéeservices
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.33/63
Avalondéfinitions

Composant:Combinaisonentreuneinterfacede
travailetuneimplantationdel’interface.Son
utilisationpermetuncouplageplussouple
qu’entreobjets,danslamesureoul’implantation
peutchangerindépendammentdesclients

Service:Grouped’unouplusieurscomposants
fournissantunesolutioncomplète.Exemple:
gestionnairedeprotocole,ordonnanceur,
authentification...
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.34/63
L’organisationdesappels
1.LogEnabled
2.Contextualizable
3.Composable
4.Configurable
5.Parameterizable
6.Initializable
7.Startable
8.Suspendable
9.Recontextualiazble
10.Recomposable
11.Reparameterizable
12.Stoppable
13.Disposable
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.35/63
Avalonconclusion

Approchestructurantepourledéveloppement
d’applicationsàbasedecomposants

Pasdeframeworkdebase

CommunautéopenSource

ProduitscompletmontésurleframeworkCocoon,
Phoenix

Approchedéclarativedesinteractionsentre
composantsADLreprésentéenXML
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.36/63
ProjetsApprochesconnexes

JavaBeans

JavaNetworkLauncherProtocol(JNLP)

NetBeans/Eclipse

OpenWings

Jini,CoolTown,.NET

Fractal,http://www.objectweb.org

...
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.37/63
LaProgrammationOrientéeServices
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.38/63
LaprogrammationOrientéeServices

Eléments

Contrats(Interfaces)

Composants(Services)

Connecteurs(Interactions)

Conteneurs(Cycledevie)

Contextes(Environnement)

Aspects

Conjonctivité

Déploiement

Mobilité

Sécurité

Disponibilité

Intéropérabilité
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.39/63
EtJava?

Lesplates-formessontproposéesinitialementsur
java

Lamachinevirtuellemetàdispositiondes
servicesspécifiquespourlaprogrammation
orientéeservices
1.L’architecturedesclassLoader
2.L’accèsaubyte-code
3.Lesproxysdynamiques
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.40/63
Classloaderjava

Permetdepiloterfinementlechargementd’une
classejava

Permetdepiloterfinementlechargementdes
ressources

Permetdegérerdesversionsd’unemêmeclasse

Permerderendrelecodeclienttotalement
indépendantducodedeservice(àl’interfaceprès)

Onutiliselesconstructionsdetype
Class.forName()
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.41/63
ExempleCL
publicinterfacePoint{
publicvoidmove(intdx,intdy);
}publicclassPointImpl{
publicvoidmove(intdx,intdy){
this.x+=dx;//erreur
}
}
==>ApprocheComposant
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.42/63
ExempleCL
publicclassClient{
publicstaticvoidmain(String[]arg){
Pointp1=newPoint();
p1.move(10,10);
}
}

Lacorrectionduserveurimposel’arrêtduclient

Clientetserveursontdépendants

Pourlesrendreindépendantsilfautun
conteneur/intercepteur/fabrique...

LemodèleestClient/Conteneur/Serveur
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.43/63
ExempleCL
publicclassServeurDePoint{
staticClassLoaderc1;
staticClassptClass;
publicstaticPointcreatePoint{Pointtmp){
PointnewPt=(Point)ptClass.newInstance();
if(tmp!=null){
newPt.move(tmp.getX(),tmp.getY();
}returnnewPt;
}publicsynchronizedvoidreloadImpl()throwsException{
URL[]serverURLS=newURL[]{newURL("file:subdir/")};
cl=newURLClassLoader(serverURLS);
ptClass=cl.classLoader("PointImpl");
}
}
Leloaderpermetdechargerdynamiquementunenou-
velleversiondeclasse
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.44/63
ExempleCL:client
publicclassClient{
staticPointpt;
publicstaticvoidmain(String[]arg){
pt=PointServer.createPoint(null);
while(true){
...pt.move(1,1);//pt=1,0
...PointServer.reloadImpl();
pt=PointServer.createPoint(pt);
pt.move(1,1);//pt=1,1
}
}
}
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.45/63
Leclient
1.Nepeutpasréférencerl’implantation
2.Lesversionsd’implantationetd’interfacesontles
mêmes
3.Ilfautpouvoirtransmettrel’ancienétat
4.Leclientdoitfournirlanouvelleetdétruire
l’ancienneréférence
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.46/63
Lesclassloadersstandards
BootStrap loader
Extensions loader
System loader
URLClassLoader
Core API (rt.jar)
java.lang
java.io
Extensions jre/lib/ext
defaut vide
Classpath classes
insa.citi
http://www.insa.fr/
insa.org
==>Securité!

java-Djava.ext.dirs=myextMaClasse

grantcodeBase"file:${java.home}/lib/ext/*"{permission
java.security.AllPermission;};
java-Xbooclasspath:rtd.jar|javaXbootclasspath/{a|p}:
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.47/63
LeByteCodeJava
publicclassTest{
publicvoidtest1(){System.out.println("Coucou1");}
publicvoidtest2(){System.out.println("Coucou2");}
}publicclassClientTest{
publicstaticvoidmain(String[]arg){
Testt=newTest();
t.test1();
}
SiTestestmodifiée,quesepasse-t’ilpourClientTest?

enC++l’invocationd’uneméthodeestrésoluepar
unoffsetmémoire

enJavalebytecodemaintientdesmetadata,qui
indiquentquelaclasseserveurn’estplus
compatible
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.48/63
Schémadeclasses
Class
Class
Class
Field
Method
ByteCodes
Pool de Constantes
1
1
1
1
1
1superclass
interfaces
*
**
1
1
*

javapTest==>Renvoielesstructuresdelaclasse

javap-c==>Présentelebytecodedelaclasse

nombreuxautreoutils(bcel,jad...)
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.49/63
Lesproxysdynamiques

Reflexion:UnclientutiliseuneAPIgénérique
pourappelerdesméthodessuruneclasseserveur
inconnueàlacompilation.

ProxysDynamiques:UnserveurutiliseuneAPI
génériquepourimplanteruneméthodequiest
fournieàl’exécutionpoursatisfairelebesoindu
client.

Mécanismedebasepourlesintercepteurs
génériques(conteneursJ2EE)

Modèlededélégationlorsquel’héritageexplose
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.50/63
Implantationparhéritage
Transactable
Loggable
Securable
classes de service
classes concrètes pour un employé
Employé loggué
Employé loggué sécurisé transactionné
Employé
Employé loggué sécurisé
Employé transactionné
Employé Sécurisé transactionné
Employé sécurisé
Employé transactionné loggué

Explosiondeclasses

Evolutivité,nouvelleinterface–>Xnouvellesclasses

Souplesse,quellessontlesclassesconcrètessignificatives
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.51/63
ImplantationparDélégation
Service de Logging
Service de Sécurité
Service de Transaction
Employé
classes nécessaires pour implanter le service par délégation
Un exemple de combinaison à l’exécution
Client
Service de Logging
Employé

Générationstatiquedecodeclient(stub)(ex:
jonas)

Proxydynamique(ex:jboss)
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.52/63
Lagénérationdynamique
objet
client
proxy
généré
Service
interposé
objet
server
meth.1
meth.2 meth.3
meth.1
meth.2 meth.3
invoque
invoque
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.53/63
Exempled’interposition:leclient
PersonneItfp=UsineDePersonne.create("Dupond");
p.getNom();
L’usinefabriquenormalementunclient,maisellepeut
interposerunservice.
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.54/63
Exempled’interposition:l’usine
publicstaticcreate(Stringname){
PersonneItfpersonne=newPersonneImpl(name);
PersonneItfproxy=(PersonneItf)Proxy.newProxyInstance(
UsineDePersonne.class.getClassLoader(),
newClass[]{Personne.class},
newInterposition(personne));
return(proxy);
}
L’usinefabriqueunproxydynamique,conformeà
l’interfaceduclient
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.55/63
Exempled’interposition:leservice
importjava.lang.reflect.*;
publicclassInterpositionimplementsInvocationHandler{
privateObjectdelegate;
publicInterposition(Objectdelegate){this.delegate=delegate;}
publicObjectinvoke(Objectsource,Methodmethod,Object[]args)
throwsThrowable{
/*Interpositionavant*/
Objectresult=null;
try{
result=method.invoke(delegate,args);/*getNomestinvoqu´e*/
}catch(InvocationTargetExceptione){throwe.getTargetException();}
/*Interpositionapr
`es*/
if(result.equals("Dupond")){result="Frenot";}
returnresult;
}
}
L’interpositionagit!
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.56/63
LesavantagesdesProxys
dynamiques
N’apportentrienparrapportàcoderladélégationàla
main
1.Ilssontdynamiquesetgénériques
2.Validationdeparamètres
3.Sécurité
4.Propagationdecontexte
5.Audit,trace,débuggage
6.Dérouterunappeljavaversunautre
environnement
==>Coûtsupérieuràuncodageàlamain
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.57/63
Performancespuissancede10ns
1.Incrémentd’unchampentier:10e0(1ns)
2.Invocationd’uneméthodevirtuelle:10e1
3.Invocationpardélégationmanuelle:10e1-10e2
4.Invocationreflexive:10e4-10e5
5.Invocationparunproxydynamique:10e4-10e5
6.Incrémentationreflexived’unentier:10e4-10e5
7.AppelRMIsurunemachinelocale:10e5
8.Ouverturedefichiers:10e6
9.Vitessedelalumièreparcours3000km:10e7
StuartDabbsHalloway,ComponentdevelopmentfortheJavaPlatform
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.58/63
LesautresapportsdelaMVjava

Lasérialisation

Lasignaturedeclasse

Lasignatured’archives(packaging/deploiement)

Lesinterfacenatives

LesappelsRMI
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.59/63
Conclusion

Denombreusesplates-formesorientées
composants

Reposentsurjavapourlamiseenoeuvre

Lesplates-formessontsouventcentréesserveur

Aucuneplate-formenerépondentièrementaux
problèmessoulevésparlesréseauxhétérogènes

Marchédumobileetdel’embarqué

Séparationdesapprochesdistribuéesetdes
approchesparcomposants

ProgrammationorientéeAspects
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.60/63
Sitesderéférence

http://www.objectweb.org/

Frameworkfractal

Jonas

OpenCCM

Jonathan

http://jakarta.apache.org

Struts

Avalon
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.61/63
ressourcesJMX/JBoss
1.JMX–
http://java.sun.com/products/JavaManagement/
2.JDMK–http://java.sun.com/products/jdmk
3.MX4J–http://sourceforge.net/projects/mx4j/
4.JSR77–http://java.sun.com/jsr
5.JBoss–http://www.jboss.org
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.62/63
OSGiRéférences
1.http://www.osgi.org/
2.http://oscar-osgi.sourceforge.net
St´ephaneFr´enot-CITI/ARES-Ecotel’2002–p.63/63