J'ai une application web Java existante qui tourne dans Tomcat et à laquelle j'ajoute un support Clojure primitif. Pour l'instant, je me contente d'inclure les fichiers sources de Clojure en tant que ressources dans le classpath et de l'invoquer par le biais de la commande clojure.lang.RT
. C'est primitif, mais ça fonctionne bien.
Cependant, j'ai remarqué que la fonction de Tomcat WebappClassLoader
met en cache les ressources récupérées par getResourceAsInputStream()
que Clojure utilise pour récupérer et compiler le code source. C'est-à-dire qu'en faisant (require 'my-ns :reload)
recharge simplement la version en cache du fichier, même si une version mise à jour est disponible sur le disque. Existe-t-il un moyen de contourner ou d'éviter cette mise en cache pour les fichiers Clojure ?
La meilleure solution que j'ai trouvée après de nombreuses recherches infructueuses sur Internet est d'utiliser la méthode de réflexion pour supprimer manuellement l'entrée dans le fichier WebappClassLoader.resourceEntries
qui est affreux .
Je dois manquer quelque chose.
Les réponses du type "utiliser Jetty/Glassfish/JBoss", "redémarrer Tomcat", etc. ne sont pas ce que je recherche.