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

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

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

спасибо,

5 ответов


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

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

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


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

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

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


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

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

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

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

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


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

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

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

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

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

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


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


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

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

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

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