octobre
2008
Aujourd’hui, j’ai failli m’arracher les cheveux à cause d’un bug bizarre dans l’application sur laquelle on travaille (une application client/serveur à base d’Eclipse RCP côté client et Tomcat tournant comme service dans Equinox côté serveur avec Spring DM).
Pour expliquer la chose, on utilise un super petit plug-in développé par Martin Lippert appelé Spring Extension Factory. Ce plugin permet de faire en sorte que les vues et éditeurs Eclipse peuvent être déclarés dans l’applicationContext du plug-in (en tant que Spring beans quoi) ce qui permet de profiter de la DI par exemple. Plus précisément, dans notre cas ceci revient à injecter les proxies des services distants (sur le serveur) qui seront invoqués par remoting (via Hessian pour le moment, mais c’est interchangeable grâce à l’abstraction Spring du Remoting).
ça marchait impec jusqu’à aujourd’hui, où on avait besoin d’utiliser une vue définie dans un plug-in A dans une perspective définie par un plug-in B. Et hop, l’injection de dépendances ne marchait plus (un NPE à l’accès à une des dépendances)
bon, heureusement que je me suis vite aperçu (enfin, plus d’une heure) que si j’utilisais les versions plus récentes de Spring Extension Factory (1.0.3 au lieu de 1.0.1) et de Spring DM (1.1.2 au lieu de 1.1.0), le problème n’est plus … Ouf !
Peut être que c’était Spring DM qui n’utilisait pas le classloader correct :
* fixed usage of incorrect class loader for imported services with client thread context class loader management
(tiré du changelog de la 1.1.2)
Mais bon, comme ça marche là, je vais pas bloquer la dessus