Я создаю веб-приложение Clojure Noir для запуска в качестве файла WAR в CloudFoundry.
В моем project.clj у меня есть:
:ring {:handler appname.server/handler}
В server.clj я создаюобработчик, использующий Noir:
(def handler (noir.server/gen-handler {:ns 'appname}))
Я создаю WAR-файл с помощью плагина lein ring:
lein ring uberwar
Затем отправляю в CloudFoundry с помощью:
vmc push appname
Обработчик запросов работает нормально, и я могу просто просмотреть URL-адрес приложения.
Итак, вопрос в том, как правильно выполнить инициализацию при запуске приложения?
Я могу сделать следующее в server.clj:
(when (System/getenv "VCAP_APPLICATION")
(init-func))
Но есть пара проблем с этим.Во-первых, кажется, что инициализация выполняется не в то время (когда код читается / читается, а не при запуске приложения).Во-вторых, средство защиты относится только к CloudFoundry, и я уверен, что для этого существует правильный общий способ WAR.
Я думаю, что это цель метода contextInitialized в ServletContextListener, но как мне подключить его с помощью Noir/ кольцо?