Je vous écris un programme serveur qui est utilisé pour exécuter des tests unitaires d'une API (afficher beaucoup d'informations et l'accès Web pour contrôler /surveiller la chose) ...Puis-je décharger et recharger dynamiquement (d'autres versions du même fichier JAR)?
Cette API est connu du serveur pendant la compilation et est fourni en tant que fichier JAR.
Pour pouvoir comparer entre les résultats des tests unitaires de versions différentes de l'API (sans redémarrer le serveur), je veux être en mesure de décharger la version « actuelle » de l'API, et de recharger un plus récent (ou un plus ancien).
Je ne veux pas utiliser URLClassLoader et invoquer chaque méthode par nom
(en utilisant getDeclaredMethod("someMethod")
),
parce que le serveur dépend fortement de l'API et ce serait compliqué à « wrap » tous les appel de méthode de manière si sale.
Je pensais: Comme toutes les interfaces de toutes versions du JAR sont même, je ne pourrais pas le faire par une autre en quelque sorte rechargeant la version du JAR (sans que par nom invokation?).
Remarque: J'utilise les dernières versions Java SE (6) et Java EE (5).
Si vous pensez, ce que j'essaie de réaliser n'est pas possible, veuillez suggérer une «solution de contournement» ou un concept différent.
Voir aussi: http://stackoverflow.com/questions/148681/unloading-classes-in-java – sleske