Примечание
Учитывая, что этот OP был написан около двух лет назад, а не задавать тот же вопрос снова, мне интересно, существуют ли пошаговые инструкции, чтобы я мог интегрировать Noir или другое веб-приложение 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)
- Существует очень простой способ обойти проблемы, с которыми я столкнулся, о которых я не знал
Что из этого, по вашему мнению, имеет место? Или это что-то еще?
Edit:
Пожалуйста, обратите внимание, что создание файла войны не составляет труда с Maven / Leiningen, а не то, что я имею в виду. Мне интересно, что мне нужно написать так много кода, чтобы заставить Compojure работать с Tomcat, базовые вещи, такие как статическое обслуживание файлов и понимание корневого контекста, что должно работать "из коробки".