Разница между сервером приложений и контейнером сервлетов? - PullRequest
108 голосов
/ 18 февраля 2011

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

Чем они отличаются и когда их использоватькоторый?

Спасибо,

Ответы [ 5 ]

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

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

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

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

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

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

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

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


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

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

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

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

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

9 голосов
/ 21 июня 2016

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

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

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

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

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

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

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

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

1 голос
/ 08 февраля 2018

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

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

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

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

...