
JRebel ?
J’utilise JRebel pour accélerer mon cycle de développement. C’est un outil impressionnant qui permet de développer une application Java EE comme du PHP. Pas de redéploiement, tout ça au prix d’une petite perte de performances en mode développement. L’outil fait ce qu’il promet, et vaut réellement son prix ! Le plugin JRebel pour maven fait exactement ce qu’on attend de lui en générant automatiquement le fichier rebel.xml qui s’occupe de la magie.
Quel est le problème alors ?
Bien que JRebel soit un outil génial, il y a un peu trop de magie à l’intérieur et, dans certains cas particuliers, il se peut que ça ne marche pas tout à fait comme attendu. Dans mon cas, j’ai une application web assez classique divisée en plusieurs modules :
- une application web (war)
- un module ejb (jar)
- d’autres modules non impliqués dans mon problème
La web application inclut, dans son dossier WEB-INF/lib, l’artifact ejb-client de mon module ejb. Pour être clair, l’artifact ejb-client est généralement le jar contenant les interfaces publiées permettant l’utilisation des ejb par les modules clients.
Le problème que j’ai eu était que la magie de JRebel entraînait le rechargemenet de trop de classes. En fait, JRebel rechargeait des classes qui n’étaient même pas dans mon artifact ejb-client. Mon container d’application (Glassfish 3.x) n’aimait pas trop ce comportement. J’ai donc ouvert un sujet sur le forum de ZeroTurnAround où j’ai eu une réponse me disant de trouver un moyen d’exclure les fichiers que je ne voulais pas voir rechargés dans mon module ejb-client.
J’ai donc fouiné dans maven-ejb-plugin, mais je n’ai rien trouvé permettant de renommer un fichier dans l’artifact ejb-client. Je n’ai pas non plus trouvé de paramètre spécifique à passer à JRebel pour lui spécifier quels noms de fichier il doit monitorer pour trouver sa configuration.
Continue reading →