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


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.