Різниця між сервером програми та контейнером сервлетів?


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 Чи можуть сервлет-контейнери називатися серверами з підмножиною можливостей * сервера додатків ". І в глибині душі вони працюють однаково (для випадків використання, загальних для обох)."
Kuldeep Yadav,

15

В цілому, контейнер сервлетів обмежує себе більш-менш реалізацією специфікації сервілетів J2EE. Крім того, увага зосереджена на середовищі виконання, а не на наданні додаткових інструментів.

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

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


Редагувати

@Apache Fan: Це залежить від специфіки вашої ситуації, наприклад, існуючих систем та планів на майбутнє. Я не думаю, що тут застосовується загальний підхід до діаграми.

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

Однак питання не дає підказки щодо того, якими є критерії оцінювання. Чи має це бути з відкритим кодом? Чи потрібна цілодобова підтримка постачальника? З яким корпоративним середовищем має інтегруватися система? Чи є проблемою ліцензійних платежів? Будь-які обов'язкові технології чи інструменти? І т.д.

Не знаючи сказаного, це дуже багато зйомок у темряві.


Я прошу з точки зору підприємства.
Пушкар

11

В основному сервер додатків у контексті 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

afaik, websphere та jboss є повністю сумісним j2ee-сервером, який може працювати за межами сервлетів, як EJB, тоді як Tomcat - це лише контейнер сервлетів, і ви не можете запускати EJB на ньому.


то під яку категорію входить сервер Apache?
рухомий камінь

Сервер Apache HTTP - це повноцінний веб-сервер .
асгс

2

Словомовно: Веб-сервер означає: Обробка HTTP-запитів (як правило, із браузерів).

Контейнер сервлетів (наприклад, Tomcat) означає: Він може працювати з сервлетами та JSP.

Сервер додатків (наприклад, GlassFish) означає: * Він може керувати програмами Java EE (як правило, як сервлетами / JSP та EJB).

Початківцю, напевно, краще зупинитися на простому контейнері з серветками.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.