JBoss vs Tomcat снова [закрыто]

138

Похоже, что это старый вопрос (который есть :)) о том, какой сервер лучше между Tomcat и JBoss, но я еще не нашел достаточно хорошего ответа, чтобы решить свою проблему.

Я знаю, что Tomcat - это всего лишь движок сервлетов, а JBoss предлагает гораздо больше функций из коробки, но я не могу понять, почему Tomcat лучше использовать в некоторых ситуациях, чем jboss. Я где-то читал, что JBoss имеет подключаемую архитектуру, и при необходимости вы можете отключить функции от JBoss, чтобы сделать его по существу контейнером сервлетов Tomcat. Если это так, то не лучше ли сделать это вместо Tomcat, чтобы оставить возможности для подключения вещей обратно.

Другое объяснение, которое я нахожу в пользу Tomcat, заключается в том, что он легкий, означает ли это меньшие требования к памяти или это также позволяет быстрее реагировать. Опять же, мне нужно знать, что jboss не будет загружать компоненты в соответствии с требованиями, т.е. если я использую только сервлеты, тогда jboss не пропустит остальные функции и не станет автоматически облегченным.

По сути, в моем приложении нет никаких функций Java EE, но «легковесные» аргументы в пользу Tomcat не кажутся достаточно убедительными из-за вышеупомянутых причин.

Пожалуйста помоги.

Изменить: мы наконец решили использовать tomcat, и мы используем его уже более 6 месяцев с большой простотой использования. Фактически, мы нашли практическое применение, когда мы могли очень легко запускать несколько экземпляров tomcat на одном сервере для разных разработчиков, то же самое могло быть очень сложно с jboss.

Я обнаружил, что tomcat не требует проблем в нашей работе и поэтому может быть правильным выбором, если вы не используете большую часть функций Java EE. PS: обратите внимание, что мы все еще используем Spring и Hibernate с Tomcat

Ашиш
источник
1
Эээ, разве JBoss не интегрируется с Tomcat?
Navi
4
@Navi: Не совсем. Он содержит разветвленную версию кодовой базы Tomcat, но она немного отличается.
skaffman
1
Простое веб-приложение без функций j2ee должно легко развертываться в любом совместимом контейнере сервлетов. Учитывая это, не должно иметь большого значения, какой из них вы используете заранее. Я бы начал с самого простого в развертывании (Tomcat и Jetty в прошлом мне хорошо служили).
Joel
3
К вашему сведению, в конце 2011 года Tomcat был сертифицирован JavaEE 6 как TomEE, чтобы ответить на этот извечный вопрос.
Дэвид Блевинс
1
закрытые вопросы, набравшие около 150 тысяч просмотров, 125 положительных и 0 отрицательных? !! Я знаю, что это правила, но я должен сказать, что эти правила нужно немного изменить.
Мухаммед Рефаат

Ответы:

132

Сначала факты, ни то, ни другое не лучше . Как вы уже упоминали, Tomcat предоставляет контейнер сервлетов, который поддерживает спецификацию сервлетов (Tomcat 7 поддерживает сервлет 3.0). JBoss AS, «полный» сервер приложений, поддерживает Java EE 6 (включая Servlet 3.0) в его текущей версии.

Tomcat довольно легкий, и если вам нужны определенные функции Java EE помимо Servlet API, вы можете легко улучшить Tomcat, предоставив необходимые библиотеки как часть вашего приложения. Например, если вам нужны функции JPA, вы можете включить Hibernate или OpenEJB, и JPA работает почти сразу же.

Как решить, использовать ли Tomcat или полный Java EEсервер приложений:

Начиная свой проект, вы должны иметь представление о том, что ему нужно. Если вы находитесь в большой корпоративной среде, JBoss (или любой другой сервер Java EE) может быть правильным выбором, поскольку он обеспечивает встроенную поддержку, например:

  1. Обмен сообщениями JMS для асинхронной интеграции
  2. Механизм веб-служб (JAX-WS и / или JAX-RS)
  3. Возможности управления, такие как JMX и интерфейс администрирования со сценариями
  4. Расширенная безопасность, например, встроенная интеграция со сторонними каталогами
  5. EAR-файл вместо поддержки "только" WAR-файла
  6. все остальные "замечательные" возможности Java EE я не могу вспомнить :-)

На мой взгляд, Tomcat очень хорошо подходит для веб-ориентированных приложений, ориентированных на пользователя. Если вступает в игру внутренняя интеграция, следует (по крайней мере) рассмотреть возможность использования сервера приложений Java EE. И последнее, но не менее важное: миграция WAR, разработанного для Tomcat, на JBoss должна занять 1 день.

Во-вторых, вы также должны учитывать использование в вашей среде. Если в вашей организации уже работает, скажем, 1000 экземпляров JBoss, вы всегда можете использовать это, независимо от ваших конкретных требований (учитывайте такие аспекты, как стоимость операций или повышение квалификации). Конечно, это справедливо и наоборот.

мои 2 цента

дом
источник
13

Взгляните на TOMEE

В нем есть все функции, необходимые для создания полноценного приложения Java EE.

Деб Дж.
источник
7

Я бы определенно посмотрел на TomEE, так как идея заключается в том, чтобы Tomcat не имел по умолчанию всей интеграции JavaEE 6. Это своего рода очень хороший компромисс

Ромен Манни-Букау
источник
6

Строго говоря; Без функций Java EE вашему приложению вообще не нужен сервер приложений ;-)

Как и другие, JBoss имеет (более или менее) полный стек Java EE, в то время как Tomcat является только веб-контейнером. JBoss можно настроить так, чтобы он служил только веб-контейнером, тогда он был бы просто тонкой оболочкой для включенного веб-контейнера tomcat. Таким образом, у вас может быть почти такой же легкий JBoss, который на самом деле будет просто тонкой «оберткой» вокруг Tomcat. Это было бы почти так же легко.

Если вам не нужны какие-либо дополнения, которые предлагает JBoss, выберите то, которое вам удобнее всего. Что проще всего настроить и поддерживать?

Джон Мартин Солаас
источник
1
насколько сложно использовать веб-службы и jmx с tomcat, не могли бы вы предоставить несколько хороших ссылок / ссылок
Ашиш
2

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

Антти Тансканен
источник