¿Cómo detengo jetty server en clojure?


Estoy escribiendo una aplicación web usando ring y clojure. Estoy usando el adaptador jetty para el servidor de desarrollo y emacs / SLIME para IDE. Si bien wrap-reload ayuda, run-jetty bloquea mi sesión de slime y me gustaría poder iniciarla / detenerla a voluntad sin tener que ejecutarla en una sesión de terminal separada. Idealmente, me gustaría definir un agente de servidor y las funciones start-server y stop-server que iniciarían / detendrían el servidor dentro del agente. Es esto posible?

Author: semperos, 2010-04-25

2 answers

Normalmente tengo una línea en mi aplicación Ring que se parece a la siguiente:

(defonce server (run-jetty #'my-app {:port 8080 :join? false}))

Esto evita bloquear el REPL. También me permite recompilar este archivo sin preocuparme de que mi servidor se redefinirá. También le permite interactuar en el REPL de la siguiente manera:

user=> (.stop server)

Y

user=> (.start server)
 99
Author: dnolen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-24 21:31:00

La documentación de Jetty tiene cierta información sobre El apagado agraciado de Jetty. Eso probablemente no es suficiente información, pero puede ayudarte a empezar.

Todavía no he empezado a jugar con compojure, pero en general prefiero trabajar con Tomcat. Es más completo; entre otras cosas, hay una API bien documentada para iniciarlo y apagarlo, escucha el comando de apagado en un puerto dedicado; hay ant tareas para hacer esto, y por supuesto podrían ser llamado desde una aplicación Java también. Simplemente no sé qué tipo de magia hace Compojure al conectar el REPL a una instancia en ejecución del contenedor Web, y si / cómo ocurre la recarga automática de clases... esperemos que alguien más sea capaz de proporcionar más información.

 1
Author: Carl Smotricz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-24 20:57:52