Créer un Unloader

Le
indiana_jules aka julien roche
Bonjour à tous,

j'aimerais savoir si certains d'entre vous à déjà créer une sorte de
"ClassUnloader", afin de décharger en mémoire les classes d'un jar.

Toutes informations et voies me seraient utiles. En effet, je suis en
train de faire dans in projet la mise ne place d'un code mobile en
RMI, où nous stockons sur l'application cliente des classes de plugins
charger dynamiquement. Mon seul ennui, c'est que lorsque je charge mon
jar de classes téléchargés, et que de nouvelles classes arrivent, je
dois décharger le jar, et ça j'ai du mal pour le moment.

Je vous remercie d'avance de vote attention, ainsi que de vos
réponses.

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ishur
Le #227335
Ce que tu veux faire ressemble a de l'OSGi, tu devrait jeté un coup
d'oeil dessus si tu ne l'as pas déjà fait.
http://en.wikipedia.org/wiki/OSGi

Je pense que ce qu'il faut c'est d'avoir un ClassLoader par plugin.

On 25 mar, 21:28, "indiana_jules aka julien roche"
Bonjour à tous,

j'aimerais savoir si certains d'entre vous à déjà créer une sorte de
"ClassUnloader", afin de décharger en mémoire les classes d'un jar.

Toutes informations et voies me seraient utiles. En effet, je suis en
train de faire dans in projet la mise ne place d'un code mobile en
RMI, où nous stockons sur l'application cliente des classes de plugins
charger dynamiquement. Mon seul ennui, c'est que lorsque je charge mon
jar de classes téléchargés, et que de nouvelles classes arrivent, je
dois décharger le jar, et ça j'ai du mal pour le moment.

Je vous remercie d'avance de vote attention, ainsi que de vos
réponses.

Merci


indiana_jules aka julien roche
Le #227334
je te remercie de ta réponse, je vais voir ça.
indiana_jules aka julien roche
Le #227329
En fait, c'est beaucoup plus simple de faire ça non pas sur un jar,
mais sur un répertoire des classes. Je trouve qu'il y a moins de
soucis. En tout cas, merci pour tout
TestMan
Le #227287
Bonjour à tous,

j'aimerais savoir si certains d'entre vous à déjà créer une sorte de
"ClassUnloader", afin de décharger en mémoire les classes d'un jar.

Toutes informations et voies me seraient utiles. En effet, je suis en
train de faire dans in projet la mise ne place d'un code mobile en
RMI, où nous stockons sur l'application cliente des classes de plugins
charger dynamiquement. Mon seul ennui, c'est que lorsque je charge mon
jar de classes téléchargés, et que de nouvelles classes arrivent, je
dois décharger le jar, et ça j'ai du mal pour le moment.

Je vous remercie d'avance de vote attention, ainsi que de vos
réponses.

Merci



Bonjour,

Si votre code n'est plus référencé, entre deux appels vous pouvez
utiliser le URLClassLoader qui pointera vers le JAR à mettre à jour et
rechargera automatiquement la derniere version ...

En gros, votre code à recharger ne doit plus avoir de Thread en cours,
ni plus de référence qui pointe dessus, et donc vous pourrez recharger
des nouvelles instances de classe :o)

Par exemple, on imagine que vous gardez une List<URL> de vos .jar dans
un coins, et qu'ils implémentent tous le même SPI
fr.exemple.ServiceMobile, vous pouvez obtenir ainsi à l'aide de
ServiceLoader.load(fr.exemple.ServiceMobile.class, new
URLClassLoader(unElementDeMaliste)). Les classes sont directement
accessibles pour chaque ServiceLoader via l'itérateur.

Attention à ne pas conserver de référence de Class ou de leur instance
avant le processus de rechargement. Et comme il est trés facile d'en
conserver (à l'insu de son plein grès) voici des petits trucs utiles :

http://blogs.sun.com/davidgs/entry/dynamic_class_loading_unloading

A+
TM

Publicité
Poster une réponse
Anonyme