Estoy construyendo una aplicación web Clojure Noir para ejecutar como un archivo WAR en CloudFoundry.Gancho de inicialización para Clojure Noir WAR/Servlet (CloudFoundry)
En mi project.clj tengo:
:ring {:handler appname.server/handler}
En server.clj que crear un controlador utilizando Noir:
(def handler (noir.server/gen-handler {:ns 'appname}))
construyo el archivo WAR utilizando un plugin anillo Lein:
lein ring uberwar
Luego empuje hacia CloudFoundry usando:
vmc push appname
El controlador de solicitudes funciona bien y puedo navegar a la URL de la aplicación muy bien.
Entonces la pregunta es: ¿cuál es la forma correcta de hacer la inicialización cuando se inicia la aplicación?
que pueda hacer lo siguiente en server.clj:
(when (System/getenv "VCAP_APPLICATION")
(init-func))
Pero hay un par de problemas con eso. Primero, parece que está haciendo la inicialización en el momento equivocado (cuando el código se lee/evalúa en lugar de al inicio de la aplicación). En segundo lugar, el protector es específico de CloudFoundry y estoy seguro de que hay una forma general adecuada de WAR para hacer esto.
Creo que este es el propósito del método contextInitialized en el ServletContextListener, pero ¿cómo puedo conectarlo con Noir/ring?