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

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

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

Спасибо,

5 ответов

Решение

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

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

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

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

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

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


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

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

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

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

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

По сути, сервер приложений в контексте 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, а не только сервлеты.

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

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

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

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

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

Другие вопросы по тегам