Разница между сервером приложений и контейнером сервлетов?


115

Я пытаюсь понять разницу между полноценным сервером приложений (например, Weblogic, JBoss и т. Д.) И контейнером сервлетов (Tomcat, Jetty и т. Д.).

Чем они отличаются и какие использовать?

Спасибо,



@Jigar: если вы знаете точный вопрос, который это дублирует, тогда вам следует проголосовать, чтобы закрыть его как дубликат.
Иоахим Зауэр

1
@Joachim Я не голосовал за закрытие.
Джигар Джоши

2
потому что это не дубликат. :)
Божо

1
упс ... не стесняйтесь игнорировать меня, кажется, я еще не дошел до необходимого уровня кофеина.
Иоахим Зауэр

Ответы:


171

Контейнер сервлетов поддерживает только API сервлетов (включая JSP, JSTL).

Сервер приложений поддерживает весь JavaEE - EJB, JMS, CDI, JTA, API сервлетов (включая JSP, JSTL) и т. Д.

Можно запустить большинство технологий JavaEE в сервлет-контейнере, но вам необходимо установить отдельную реализацию конкретной технологии.


1
+1 с моей стороны, Хорошие отличия. Еще отличия @Bozho
Deepak

1
@Bozho: +1: Одна вещь, которую я до сих пор заметил в вас, - это упрощенные термины, которые вы часто вставляете в свои удивительные ответы.
Ширгилл Фархан

1
это очень полезно @Bozho
Xstian

@Bozho Можно ли вызывать контейнеры сервлетов как серверы с подмножеством возможностей * сервера приложений ". И в глубине души они работают одинаково (для общих для обоих случаев использования).
Кулдип Ядав

15

Вообще говоря, контейнер сервлетов более или менее ограничивается реализацией спецификации сервлетов J2EE. Кроме того, он сосредоточен на среде выполнения, а не на предоставлении дополнительных инструментов.

Напротив, полноценный сервер приложений реализует весь стек J2EE; плюс он поставляется со всеми корпоративными инструментами и возможностями интеграции. Сервер приложений обычно имеет расширенные интерфейсы администрирования, поддерживает кластеризацию и другие функции, которые в основном используются при разработке высокопроизводительных систем.

Для новичка, вероятно, лучше остаться с простым контейнером сервлетов, поскольку кривая обучения там гораздо менее крутая.


редактировать

@Apache Fan: Это зависит, помимо прочего, от специфики вашей ситуации, например, существующих систем и планов на будущее. Я не думаю, что здесь применим общий подход с блок-схемами.

Выбор платформы обычно осуществляется путем сопоставления конкретных требований с непосредственным знанием рассматриваемых систем.

Однако вопрос не дает подсказок относительно критериев оценки. Должен ли он быть открытым исходным кодом? Нужна ли круглосуточная поддержка поставщика? С какой корпоративной средой должна интегрироваться система? Лицензионные сборы - это проблема? Какие-нибудь необходимые технологии или инструменты? И т.п.

Не зная вышесказанного, это в значительной степени стреляет в темноте.


Я спрашиваю с точки зрения предприятия.
Пушкарь

11

По сути, сервер приложений в контексте Java EE - это программное обеспечение, установленное на сервере и реализующее одну спецификацию Java EE (например, Java EE 7). Это означает, что такое программное обеспечение (сервер приложений) должно иметь возможность запускать приложение Java EE.

Java EE определяет 4 домена, так называемые контейнеры :

  • Контейнер апплета,
  • Контейнер клиента приложения,
  • Веб-контейнер и
  • Контейнер EJB.

Два контейнера являются частью сервера приложений (EJB и веб-контейнер), а два других - частью клиентского компьютера.

JBoss и Weblogic - это серверы приложений, Tomcat и Jetty - веб-контейнер. Вот почему JBoss и Weblogic могут работать с большим количеством технологий, чем веб-контейнер. Сервер приложений может управлять EJB.

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


2

afaik, websphere и jboss - это полностью совместимый j2ee-сервер, который может работать за пределами сервлетов, таких как EJB, тогда как Tomcat - это просто контейнер сервлетов, и вы не можете запускать на нем EJB.


тогда в какую категорию входит сервер Apache?
Rolling

HTTP-сервер Apache - это полноценный веб-сервер .
asgs 05

2

С точки зрения непрофессионала: веб-сервер означает: обработку HTTP-запросов (обычно от браузеров).

Контейнер сервлетов (например, Tomcat) означает: он может обрабатывать сервлеты и JSP.

Сервер приложений (например, GlassFish) означает: * Он может управлять приложениями Java EE (обычно как сервлетами / JSP, так и EJB).

Новичку, вероятно, лучше остановиться на простом контейнере сервлетов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.