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

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

Как они отличаются и когда использовать, что?

Спасибо,

Ответ 1

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

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

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

Ответ 2

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

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

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


Edit

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

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

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

Не зная выше, он довольно стреляет в темноте.

Ответ 3

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

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

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

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

Ответ 4

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