Jak zatrzymać jetty server w clojure?

Piszę aplikację webową używając pierścienia i clojure. Używam adaptera jetty dla serwera programistycznego i emacs/SLIME dla IDE. Podczas gdy wrap-reload pomaga, run-jetty blokuje moją sesję slime i chciałbym móc ją uruchamiać / zatrzymywać bez konieczności uruchamiania jej w oddzielnej sesji terminala. Najlepiej byłoby zdefiniować agenta serwera i funkcje start-server I stop-server, które uruchamiałyby / zatrzymywały serwer wewnątrz agenta. Czy to możliwe?

Author: semperos, 2010-04-25

2 answers

Zwykle mam linię w mojej aplikacji pierścieniowej, która wygląda następująco:

(defonce server (run-jetty #'my-app {:port 8080 :join? false}))
To zapobiega blokowaniu REPL. Pozwala mi to również na rekompilację tego pliku bez obawy, że mój serwer zostanie ponownie zdefiniowany. Pozwala również na interakcję w REPL w ten sposób:
user=> (.stop server)

I

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/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-24 21:31:00

Dokumentacja Jetty zawiera pewne informacje o graceful shutdown Jetty. To prawdopodobnie za mało informacji, ale może zacząć.

Jeszcze nie zacząłem grać z compojure, ale ogólnie wolę pracować z Tomcat. Jest bardziej w pełni funkcjonalny; między innymi istnieje dobrze udokumentowane API do uruchamiania i zamykania go, nasłuchuje polecenia shutdown na dedykowanym porcie; istnieją ant zadania do tego celu i mogą być oczywiście wywołane z aplikacji Java, jak również. Po prostu nie wiem, jaki magiczny Compojure robi z podłączeniem REPL do uruchomionej instancji Web containera i czy / jak następuje automatyczne przeładowanie klasy... mam nadzieję, że ktoś inny będzie w stanie dostarczyć więcej informacji.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-24 20:57:52