Cours jsp

Disponible uniquement sur Etudier
  • Pages : 14 (3365 mots )
  • Téléchargement(s) : 0
  • Publié le : 23 juin 2010
Lire le document complet
Aperçu du document
Cours 9 : Servlet, JSP, corba
chargement dynamique Applet Servlet JSP Corba

Cours 9 - PC2R - UPMC - 2006/2007 – p. 1/6

Chargeur de classes utilisateur
classe abstraite java.lang.ClassLoader : charger le byte-code : méthode : byte [] loadClassData (String) définir un objet Class à partie de cette suite d’octets : méthode : Class defineClass(byte [], int,int) faire l’édition de liens :méthode : resolveClass(Class) la méthode Class loadClass(String,bool) effectue ces tâches.

Cours 9 - PC2R - UPMC - 2006/2007 – p. 2/6

Chargement
La machine virtuelle Java charge dynamiquement les classes dont l’exécution du programme en cours a besoin. L’option -verbose de l’interprète de byte-code de la machine abstraite Java. Habituellement la machine virtuelle Java charge une classe à partird’un fichier local. Ce chargement peut être dépendant du système (variable CLASSPATH sous Unix, . . . ). Néanmoins il peut avoir des situations où les classes doivent être chargées de manière différentes : classes distantes (accessibles à partir d’un serveur sur le réseau), format de fichier spécifique, conversion à la volée, modification de la sécurité. Pour ces cas, il est nécessaire de définir unesous-classe de la classe abstraite ClassLoader pour étendre le comportement de chargement.

Cours 9 - PC2R - UPMC - 2006/2007 – p. 3/6

Exemple (1)
L’exemple suivant, tiré du tutorial de Java, montre comment créer un chargeur de classes pour le réseau. La classe NetworkClassLoader définit deux méthodes :
loadClassData qui d’une URL retourne un tableau d’octets correspondant au code transmiset loadClass (seule méthode abstraite de la classe ClassLoader) pour le chargement effectif. Elle contient d’autre part une table de hachage pour connaître les classes déjà transférées.
loadClass vérifie si le nom de la méthode est déjà dans la table de hachage, si ce n’est

pas le cas, elle transfère les données et construit la classe à partir d’un tableau d’octets, stocke la classe dans latable de hachage puis déclenche resolveClass pour autoriser la création d’instances.

Cours 9 - PC2R - UPMC - 2006/2007 – p. 4/6

Exemple (2)
class NetworkClassLoader extend ClassLoader { String host; int port; Hashtable cache = new Hashtable(); private byte loadClassData(String name)[] { // load the class data from the connection ... } public synchronized Class loadClass(String name,boolean resolve) { Class c = cache.get(name); if (c == null) { byte data[] = loadClassData(name); c = defineClass(data, 0, data.length); cache.put(name, c); } if (resolve) resolveClass(c); return c; } }

Cours 9 - PC2R - UPMC - 2006/2007 – p. 5/6

Exemple (3)
Le code suivant montre comment créer une instance de la classe Main chargée dynamiquement par le nouveau chargeur.
ClassLoader loader= newNetworkClassLoader(host,port); Object main= loader.loadClass("Main", true).newInstance(); ...

Les navigateurs WWW, intégrant une machine virtuelle Java, implantent une sous-classe de ClassLoader (abstraite) pour le transfert via le réseau des classes et pour modifier la sécurité (d’où un changement de comportement entre appletviewer et netscape).

Cours 9 - PC2R - UPMC - 2006/2007 – p. 6/6 Différents classLoaders
Applet class loader : chaque navigateur en possede un (se basant sur l’URL CODEBASE) RMIclassLoader URLclassLoader : permet de charger des classes à partir d’un ensemble d’URL

Cours 9 - PC2R - UPMC - 2006/2007 – p. 7/6

Exemple
try { urlList ul = { new URL ("http://www.infop6.jussieu.fr/classes"), new URL ("http://java.sun.com/myjar.jar")}; ClassLoader lo = newURLClassLoader(urlList); Class c = loader.loadClass("MaClasse"); MaClass mc = (MaClass)c.newInstance(); } ...

Cours 9 - PC2R - UPMC - 2006/2007 – p. 8/6

Applets
La classe Applet hérite de Panel et implante Runnable. Une applet possède une zone graphique (conteneur Panel) qui n’ouvre pas une nouvelle fenêtre. Une applet peut s’executer : dans une application graphique, Panel composant du...
tracking img