xsbt-web-plugin Запуск контейнера веб-сервлета вне sbt?

Я использую xsbt-web-plugin для размещения своего сервлета. Он отлично работает, используя container:start.

Мне теперь нужно, чтобы он работал в фоновом режиме, как демон, даже если я зависну, а в идеале, даже если машина перезагрузится. Я бы предпочел не вызывать sbt.

Я знаю, что плагин может упаковать файл WAR, но я не запускаю tomcat или что-то в этом роде. Я просто хочу делать то, что делает container:start, но более надежным (читай: неинтерактивным) способом.

(Моя цель — демонстрация разработки: мне бы не хотелось, чтобы мой сеанс ssh отключил sbt или что-то подобное, пока люди используют демоверсию. Но мы еще не готовы к производству и не имеем инфраструктуры сервлетов. )


person SRobertJames    schedule 11.12.2014    source источник


Ответы (1)


xsbt-web-plugin на самом деле не предназначен для использования в качестве производственного сервера (с такими функциями, как автоматический перезапуск, восстановление после сбоев, запуск при загрузке и т. д.), однако я понимаю полезность его использования таким образом для небольших целей разработки.

У вас есть несколько вариантов:

Первый подход

Запустите sbt в сеансе экрана, который вы можете (отключить) подключить по желанию, не прерывая sbt.

Второй подход

Переопределите функцию shutdown, которая срабатывает на обработчике выхода sbt, чтобы контейнер продолжал работать после остановки sbt.

Для этого подхода добавьте следующий параметр в конфигурацию sbt:

build.sbt:

onLoad in Global := { state => state }

Обратите внимание, что это полностью переопределит параметр onLoad, поэтому в (маловероятном) случае, когда вы настроили его для выполнения других важных действий, они не произойдут.

Теперь вы можете запустить свой контейнер, либо запустив container:start из sbt, а затем выйдя из sbt, либо просто запустив sbt container:start из командной строки, которая вернется после разветвления JVM контейнера. Подождите несколько секунд, после чего вы сможете отправить запрос на localhost:8080.

person earldouglas    schedule 11.12.2014