2012-06-28 5 views
0

Я изучал Apache commons-daemon, и это выглядит довольно круто: в основном его API, а также библиотека, которая помогает зарегистрировать JAR с базовой ОС, чтобы его можно было запустить и остановить, как сервис-демон. Кроме того, он перехватывает сигналы ОС, которые обычно убивают ваше приложение, и вместо этого дает вам возможность вежливо остановиться.Автономный демон или контейнер для приложений?

Так что мне интересно, если у вас есть выбор между развертыванием вашей бизнес-логики внутри EJB и их упаковкой в ​​контейнере наподобие OGS или JBoss, почему бы просто не создать JAR-демона, который слушает порт и отвечает на запросы клиентов?

Это просто преимущество всех функций/сервисов, которые контейнер приложения предоставляет из коробки (безопасность, ведение журнала и т. Д.), Или бывают случаи, когда было бы выгодно выбирать демона над контейнером приложения/EJB решение?

В принципе, что я спрашиваю, если: , когда более целесообразно использовать контейнер приложения/EJB-решение, и когда более целесообразно использовать commons-daemon, чтобы помочь создать сервис на уровне системы (на Java)?

Отказ от ответственности: меня интересуют только эти два варианта, я знаю, что существуют другие решения (веб-контейнеры, ESB, OSGi и т. Д.). Но для целей этого вопроса мне только интересно услышать рассуждения между контейнерами приложений или решениями-демонами. Заранее спасибо!

ответ

0

Почему вы не смотрите на него как на уровне системы (демон) и на уровне приложения (в контейнере)?

Это даст более или менее четкое различие (особенно, если работать с Linux некоторое время).

Для Daemon:

  • имеет свой собственный жизненный цикл (вы можете запускать и останавливать его отдельно);
  • различные привилегии (могут выполняться под другим пользователем);
  • прецедент - это что-то вроде CRON, MailServer, синхронизации и любого сервиса на системном уровне.

Для контейнера:

  • управляемого приложения (по некоторым привилегированным пользователем через Container консоли);
  • большое количество готовых функций (о которых вы уже упоминали);
  • использование кейс какой-либо в общем случае бизнес заявление.
0

Ну, простой ответ - да, сервер приложений (Glassfish или JBoss) дает вам много приятных вещей, которые вам придется реализовать или настроить в простом приложении Java SE.

Однако это не так черно-белое изображение, и вы можете получить очень много пользы от сервера приложений с минимальными усилиями, я сейчас пишу blog series именно по этой теме.

Причина, по которой я не использовал сервер приложений, заключался в том, что у нас был проект для широко распространенного программного продукта, и мы хотели избежать необходимости исправлять и поддерживать тысячи экземпляров сервера приложений!

Однако, если ваше приложение будет работать в одном месте, нет никаких оснований для перехода на Java SE.