Note
Étant donné que cet OP a été écrit il y a environ deux ans, plutôt que de poser à nouveau la même question, je me demande s'il existe des instructions étape par étape, afin que je puisse intégrer un Noir ou une autre application web Clojure dans Apache, que ce soit Jetty, Tomcat, ou autre. Des instructions similaires existent pour Django, et je pense avoir compris que Python est utilisé dans le cas de Django comme un moteur plutôt que comme un framework annulaire, les choses sont donc plus compliquées avec les applications web Clojure.
Note de fin
Je suis profondément amoureux de Clojure, et Compojure semble être un framework web soigné.
Mais tout s'est écroulé lorsque j'ai voulu déployer mon application sur un serveur d'application ordinaire comme Tomcat en tant que WAR. J'ai dû écrire des gestionnaires Ring personnalisés pour les fichiers statiques et les ressources qui fonctionneraient à la fois sur Jetty et sur Tomcat, car les gestionnaires standard ne fonctionnaient pas, et j'ai dû ajouter manuellement la racine contextuelle partout.
Je n'en reviens pas d'avoir dû écrire tout ce code pour créer l'application web la plus simple qui soit et qui fonctionne à la fois sur Jetty et Tomcat. Je n'ai que trois explications possibles pour cela :
- Personne n'utilise Clojure/Compojure pour autre chose que le développement local avec Jetty, c'est-à-dire en production.
- Tout le monde déploie des applications Clojure/Compojure sur un Jetty dédié sans contexte Root (comme les gens le font avec les applications Node.js).
- Il existe un moyen très simple de contourner les problèmes que j'ai rencontrés et dont je n'étais pas au courant.
Lequel de ces points est, à votre avis, le cas ? Ou s'agit-il d'autre chose ?
Editar:
Veuillez noter que la création d'un fichier war est un jeu d'enfant avec Maven/Leiningen et n'est pas ce que je veux dire. Je me demande si je dois écrire autant de code pour faire fonctionner Compojure avec Tomcat, des trucs de base comme le service de fichiers statiques et la conscience de la racine du contexte qui devrait travailler en dehors de la boîte.