Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer un Unloader

4 réponses
Avatar
indiana_jules aka julien roche
Bonjour =E0 tous,

j'aimerais savoir si certains d'entre vous =E0 d=E9j=E0 cr=E9er une sorte de
"ClassUnloader", afin de d=E9charger en m=E9moire 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=F9 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=E9l=E9charg=E9s, et que de nouvelles classes arrivent, je
dois d=E9charger le jar, et =E7a j'ai du mal pour le moment.

Je vous remercie d'avance de vote attention, ainsi que de vos
r=E9ponses.

Merci

4 réponses

Avatar
ishur
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"
wrote:
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


Avatar
indiana_jules aka julien roche
je te remercie de ta réponse, je vais voir ça.
Avatar
indiana_jules aka julien roche
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
Avatar
TestMan
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