Примечание
Учитывая, что этот OP был написан около двух лет назад, вместо того, чтобы снова задавать тот же вопрос, мне интересно, существуют ли пошаговые инструкции, чтобы я мог интегрировать нуар или другое веб-приложение Clojure в Apache, будь то Jetty, Tomcat или что-то еще. Подобные инструкции существуют для Django, и я думаю, что понимаю, что Python запускается в случае Django как движок, а не кольцевая структура, поэтому с веб-приложениями Clojure все сложнее.
Конец примечания
Я очень люблю Clojure, и Compojure кажется изящным веб-фреймворком.
Но все развалилось, когда я захотел развернуть свое приложение на обычном сервере приложений, таком как Tomcat, в качестве WAR. На самом деле мне пришлось написать собственные обработчики Ring для статических файлов и ресурсов, которые будут работать как на локальной Jetty, так и на Tomcat, потому что стандартные обработчики этого не сделали, и мне пришлось добавлять корень контекста везде вручную.
Я глубоко поражен тем, что мне пришлось написать весь этот код, чтобы создать простейшее из возможных веб-приложений, которое могло бы работать как на Jetty, так и на Tomcat. У меня есть только три возможных объяснения этому:
- Никто не использует Clojure / Compojure для чего-либо, кроме локальной разработки с помощью Jetty, то есть в продакшене.
- Все развертывают приложения Clojure / Compojure на выделенной Jetty без корневого контекста (например, люди делают это с приложениями Node.js)
- Есть действительно простой способ обойти проблемы, с которыми я столкнулся, о которых не знал.
Что из этого, по вашему мнению, так? Или что-то еще?
Изменить:
Обратите внимание, что создание файла войны с Maven / Leiningen - это не проблема, а не то, что я имею в виду. Мне интересно, что мне нужно написать так много кода, чтобы Compojure работал с Tomcat, базовые вещи, такие как обслуживание статических файлов и понимание корневого контекста, которые должны работать из коробки.