2010-04-27 2 views
6

Хотя я неоднократно нахожу, что на этот вопрос ответили здесь на SW, я не нашел заключительного ответа, что лучше всего подходит.Лучший способ демонстрации приложения Java в Linux

Я не хочу использовать какую-либо внешнюю оболочку, поскольку я обнаружил, что они запускают процесс java под хорошим уровнем ниже, чем сами, что потенциально снижает производительность, поэтому кажется, что остались только методы оболочки.

я до сих пор нашел 3 различных методов оболочки:

  • старт-стоп-демон
  • RedHat функция демона init.d
  • поЬир на старте/откреститься после запуска

Что вы люди используете, и можете рекомендовать как самый надежный метод?

Спасибо.

+0

«То, что вы, люди, используете», вопросы опроса вне темы для SO – Raedwald

+0

«То, что вы используете люди». Это тема, которая так раздражает, что вы решили просто закрыть вещи, потому что они «основаны на мнениях». Иронический не? – Nazar

ответ

5

Хотя стандартный ответ на этот вопрос выглядит jsvc, я использовал djb's daemon tools, чтобы стать отличным способом сделать что-нибудь в демоне.

У меня есть java, python и несколько сценариев оболочки, все работают как демоны, с простым способом запускать/останавливать их и отличную регистрацию.

Я использовал для запуска daemontools как root на initctl, как первоначально было разработано, но через несколько месяцев я решил запустить его вручную под обычным пользователем и использовать svscan-start для более удобного ведения журнала.

-1

Вы можете попробовать использовать screen (экран запуска, а затем запустить программу Java, а затем закрыть [не бросить] экран)

+0

Не совсем страшное предложение, я делаю это для определенных вещей. Но я думаю, что это довольно штопать далеко от цели запуска чего-то как демона. Тем не менее, спасибо за предложение. –

1

Я бы не исключает внешние упаковщики полностью.
Я заметил некоторое уважаемое программное обеспечение с использованием Tanuki Wrapper http://wrapper.tanukisoftware.org/.

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

+0

Он не сможет запустить это как службу Windows в Linux. – danben

+0

Ну, я действительно не очень внимательно смотрел моно-разработки, но это было не так. Зачем ограничивать приложение для работы в Linux только без необходимости. Возможно, другие могут найти необходимость запуска приложения и оказаться в положении, когда они могут работать только в окнах. Вместо того, чтобы преследовать потенциальных пользователей, почему бы не ограничить ограничения и не поощрять повторное использование. – crowne

5

Если я хочу, чтобы запустить приложение в фоновом режиме, как демон, я делаю это так:

nohup java -jar MyJar &

Там нет ничего особенно ненадежны об этом - nohup удерживает его от получения SIGHUP при отключении , и & запускает процесс в фоновом режиме.

При необходимости вы можете перенаправить вывод на что-то другое, кроме nohup.out.

2

Я использовал бы функцию init.d daemon RedHat. Это позволяет перезагрузить приложение при работе сервера. Запуск nohup не обрабатывает перезагрузки сервера и т. Д.

1

Я использовал Akuma в прошлом с большим успехом. Тот факт, что это Java-библиотека, делает вещи проще, внедрение функций тривиально.

3

Взгляните на http://yajsw.sourceforge.net/. Это бесплатная и несколько совместимая переоснастка TanukiSoftware Java Service Wrapper с бесплатной поддержкой 64-бит.

Существует также сравнительная таблица для YAJSW, JSW, ACD и L4J.

Смежные вопросы