Nota
Da diese OP vor etwa zwei Jahren geschrieben wurde, frage ich mich, ob es eine Schritt-für-Schritt-Anleitung gibt, mit der ich eine Noir- oder andere Clojure-Webanwendung in den Apache integrieren kann, egal ob es sich um Jetty, Tomcat oder etwas anderes handelt. Ähnliche Anleitungen gibt es für Django, und ich glaube zu wissen, dass Python im Fall von Django als Engine und nicht als Ring-Framework ausgeführt wird, so dass die Dinge bei Clojure-Webanwendungen komplizierter sind.
Ende Anmerkung
Ich bin sehr verliebt in Clojure, und Compojure scheint ein ordentliches Web-Framework zu sein.
Aber alles brach zusammen, als ich meine Anwendung auf einem normalen Anwendungsserver wie Tomcat als WAR bereitstellen wollte. Ich musste benutzerdefinierte Ring-Handler für statische Dateien und Ressourcen schreiben, die sowohl auf dem lokalen Jetty als auch auf Tomcat funktionierten, da die Standard-Handler dies nicht taten, und ich musste den Kontext Root überall manuell vorangestellt.
Ich bin negativ erstaunt, dass ich all diesen Code schreiben musste, um die denkbar einfachste Webanwendung zu erstellen, die sowohl auf Jetty als auch auf Tomcat laufen würde. Ich habe nur drei mögliche Erklärungen dafür:
- Niemand verwendet Clojure/Compojure für etwas anderes als die lokale Entwicklung mit Jetty, d.h. in der Produktion
- Jeder stellt Clojure/Compojure-Anwendungen auf einem dedizierten Jetty ohne Context Root bereit (so wie man es mit Node.js-Anwendungen macht)
- Es gibt eine wirklich einfache Möglichkeit, die Probleme zu umgehen, die mir nicht bewusst waren
Was davon ist Ihrer Meinung nach der Fall? Oder ist es etwas anderes?
Edit :
Bitte beachten Sie, dass das Erstellen einer War-Datei mit Maven/Leiningen ein Kinderspiel ist und nicht das, was ich meine. Ich wundere mich, dass ich so viel Code schreiben muss, damit Compojure mit Tomcat funktioniert, grundlegende Dinge wie statisches File Serving und Context Root Awareness, die debe aus der Box heraus arbeiten.