Как остановить сервер Jetty в ближайшем будущем? - PullRequest
53 голосов
/ 25 апреля 2010

Я пишу веб-приложение, используя ring и clojure. Я использую адаптер Jetty для сервера разработки и emacs / SLIME для IDE. Хотя wrap-reload помогает, run-jetty блокирует мой сеанс слизи, и я хотел бы иметь возможность запускать / останавливать его по своему желанию без необходимости запуска его в отдельном терминальном сеансе. В идеале я хотел бы определить серверный агент и функции start-server и stop-server, которые будут запускать / останавливать сервер внутри агента. Возможно ли это?

Ответы [ 2 ]

102 голосов
/ 25 апреля 2010

У меня обычно есть строка в приложении Ring, которая выглядит следующим образом:

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

Это предотвращает блокировку REPL. Это также позволяет мне перекомпилировать этот файл, не беспокоясь о том, что мой сервер будет переопределен. Он также позволяет вам взаимодействовать на REPL следующим образом:

user=> (.stop server)

и

user=> (.start server)
1 голос
/ 25 апреля 2010

Документация Jetty содержит некоторую информацию о постепенном отключении Jetty.Вероятно, этой информации недостаточно, но она может помочь вам начать.

Я еще не начал играть с compojure, но в целом я предпочитаю работать с Tomcat.Это более полнофункциональный;среди прочего, есть хорошо документированный API для его запуска и выключения, он слушает команду shutdown на выделенном порту;Для этого есть ant задач, и они, конечно, могут быть вызваны из приложения Java.Я просто не знаю, какое волшебство Compojure делает с подключением REPL к работающему экземпляру веб-контейнера, и если / как происходит автоматическая перезагрузка классов ... надеюсь, кто-то еще сможет предоставить больше информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...