Развертывание сервлета Java - встраивать или нет - Tomcat / Jetty - PullRequest
9 голосов
/ 18 февраля 2011

У меня есть несколько веб-приложений, развернутых в производство. Я использовал Tomcat в качестве своего двигателя сервлета в течение ~ 10 лет. Я подумываю перейти к внедрению модели Jetty из модели развертывания войны в Tomcat.

Эти веб-приложения развернуты на нескольких серверах, а некоторые из них масштабируются по горизонтали (с использованием разбиения на основе хеша nginx IP).

вижу некоторые преимущества:

  • Я могу настроить свой движок сервлетов для определенного веб-приложения (вместо универсальной конфигурации для Tomcat, на котором запущено несколько различных веб-приложений)

  • Проще масштабировать мое веб-приложение по горизонтали, запустив несколько экземпляров Jetty (настроенных для прослушивания на разных портах) на одном хосте. Я мог бы также сделать это с Tomcat (и в прошлом я запускал несколько экземпляров tomcat на одном и том же хосте), но я перешел к использованию пакетов Debian (.deb архивы) для развертывания, и не так легко запустить несколько Tomcats с помощью этот метод.

  • Мой пакет развертывания (.deb) более "завершен" во время сборки, т. Е. Мне не нужно быть уверенным, что экземпляр Tomcat настроен правильно.

И недостатки:

  • Чем больше экземпляров движка сервлета на сервере, тем больше ресурсов используется

  • Я никогда не использовал Jetty. Я не думаю, что у меня есть какие-то вещи, относящиеся к Tomcat, в моих веб-приложениях, но я не уверен.

Моя главная проблема - количество ресурсов, которое будет использовать Jetty. Если у меня был один экземпляр Tomcat, на котором запущено 4 веб-приложения, какая разница в ресурсах (памяти / процессоре) при работе четырех экземпляров Jetty?

Этот вопрос, вероятно, слишком открытый, но мне любопытно узнать, пропускаю ли я что-то или есть ли у кого-нибудь опыт перехода с Tomcat на (встроенный) Jetty.

Ответы [ 3 ]

2 голосов
/ 18 февраля 2011

Веб-контейнер, который мне было проще всего внедрить в файл jar (и он все еще является действительной WAR), это Winstone (http://winstone.sourceforge.net/).

Jenkins - http://jenkins -ci.org / - используйте этот контейнер, чтобы он был достаточно стресс-тестирован. Обратите внимание, что это только Servlet 2.4.

0 голосов
/ 18 февраля 2011

Ну, я думаю, что нет прямого ответа;

Возможно, я не совсем понимаю часть ".deb", так как я не фанат Debian:)

Я предпочитаю иметь экземпляр tomcat с несколькими конфигурациями, такими как папки CATALINA_HOME, где вы можете указать работающие приложения и порты, так что вы всегда можете иметь все свои конфигурации отдельно и изменять экземпляр tomcat при необходимости.

Также см. Пост по теме: Причал: вставлять или не вставлять?

0 голосов
/ 18 февраля 2011

Я также привык к Tomcat, поэтому в своем новом проекте я попытался использовать Jetty, чтобы узнать об этом.

В корпоративной среде (где у вас есть серверы производства / тестирования / разработки), я бы придерживался Tomcatглавным образом потому, что это помогает вам отделить код от файлов конфигурации (сейчас я работаю над настройкой файлов conf в отдельном jar-файле, потому что таким образом, когда я перемещаю изменения из тестирования в производство, им не нужно вручную обновлять jar-файлы, которыеЯ перейду к sysadmin).

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

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

...