Różnica między serwerem aplikacji a kontenerem serwletów?

115

Próbuję zrozumieć różnicę między pełnoprawnym serwerem aplikacji (np. Weblogic, JBoss itp.) A kontenerem serwletów (Tomcat, Jetty itp.).

Czym się różnią i kiedy których użyć?

Dzięki,

Pushkar
źródło
@Jigar: jeśli znasz dokładne pytanie, które się powtarza, powinieneś zagłosować za zamknięciem go jako duplikatu.
Joachim Sauer,
1
@Joachim Nie głosowałem za zamknięciem.
Jigar Joshi
2
ponieważ nie jest to duplikat. :)
Bozho,
1
Ups ... możesz mnie zignorować, wygląda na to, że jeszcze nie osiągnąłem niezbędnego poziomu kofeiny.
Joachim Sauer,

Odpowiedzi:

171

Kontener serwletów obsługuje tylko API serwletów (w tym JSP, JSTL).

Serwer aplikacji obsługuje całe JavaEE - EJB, JMS, CDI, JTA, API serwletów (w tym JSP, JSTL) itp.

Możliwe jest uruchomienie większości technologii JavaEE w kontenerze serwletów, ale musisz zainstalować samodzielną implementację konkretnej technologii.

Bozho
źródło
1
+1 z mojej strony, dobre różnice, więcej różnic @Bozho
Deepak
1
@Bozho: +1: Jedną rzeczą, jaką do tej pory zauważyłem w tobie, są uproszczone terminy, które często umieszczasz w swoich niesamowitych odpowiedziach.
Shirgill Farhan
1
to bardzo przydatne @Bozho
Xstian
@Bozho Czy serwlet-kontenery mogą być wywoływane jako serwery z podzbiorem możliwości * serwera aplikacji ”. W głębi duszy działają identycznie (w przypadkach użycia wspólnych dla obu).
Kuldeep Yadav
15

Mówiąc ogólnie, kontener serwletów ogranicza się mniej więcej do implementacji specyfikacji serwletu J2EE. Skupia się również na środowisku wykonawczym, a nie na dostarczaniu dodatkowych narzędzi.

W przeciwieństwie do tego pełnoprawny serwer aplikacji implementuje cały stos J2EE; dodatkowo zawiera wszystkie narzędzia biznesowe i możliwości integracji. Serwer aplikacji ma zwykle zaawansowane interfejsy administracyjne, obsługuje klastrowanie i inne funkcje wykorzystywane głównie w tworzeniu systemów high-end.

Dla początkującego prawdopodobnie lepiej pozostać przy prostym kontenerze serwletów, ponieważ krzywa uczenia się jest znacznie mniej stroma.


Edytować

@Apache Fan: To zależy od specyfiki Twojej sytuacji, takiej jak między innymi istniejące systemy i plany na przyszłość. Nie sądzę, aby można tu było zastosować ogólne podejście oparte na schemacie blokowym.

Wyboru platformy dokonuje się zwykle poprzez porównanie konkretnych wymagań z wiedzą z pierwszej ręki o rozważanych systemach.

Jednak pytanie nie daje żadnych wskazówek, jakie są kryteria oceny. Czy powinien być open source? Czy konieczne jest całodobowe wsparcie ze strony dostawcy? Z jakim środowiskiem korporacyjnym powinien zintegrować się system? Czy opłaty licencyjne są problemem? Jakieś niezbędne technologie lub narzędzia? Itp.

Nie wiedząc o powyższym, kręcimy się w ciemności.

Saul
źródło
Pytam z perspektywy przedsiębiorstwa.
Pushkar,
11

Zasadniczo serwer aplikacji w kontekście Java EE to oprogramowanie zainstalowane na serwerze, które implementuje jedną specyfikację Java EE (na przykład Java EE 7). Oznacza to, że takie oprogramowanie (serwer aplikacji) musi być w stanie uruchomić aplikację Java EE.

Java EE definiuje 4 domeny, tzw. Kontenery :

  • Kontener apletów,
  • Kontener klienta aplikacji,
  • Kontener internetowy i
  • Pojemnik EJB.

Dwa kontenery są częścią serwera aplikacji (EJB i kontener WWW), a dwa inne są częścią komputera-klienta.

JBoss i Weblogic to serwery aplikacji, Tomcat i Jetty to kontener WWW. Dlatego JBoss i Weblogic mogą obsługiwać więcej technologii niż kontener internetowy. Serwer aplikacji może zarządzać EJB.

Kontener serwletów nie jest odpowiednim wyrażeniem dla kwalifikowanych serwerów Tomcat i Jetty, ponieważ jest bardziej restrykcyjny. Tomcat może również wykonywać JSP i JSF, nie tylko serwlety.

nanachimi
źródło
2

afaik, websphere i jboss są w pełni zgodnymi serwerami j2ee, które mogą działać poza serwletami, takimi jak EJB, podczas gdy Tomcat jest tylko kontenerem serwletów i nie można na nim uruchamiać EJB.

asgs
źródło
to do której kategorii należy serwer Apache?
toczący się kamień
Apache HTTP Server to w pełni rozwinięty serwer WWW .
asgs
2

Mówiąc językiem laików: serwer WWW oznacza: obsługę żądań HTTP (zwykle z przeglądarek).

Kontener serwletów (np. Tomcat) oznacza: Może obsługiwać serwlety i JSP.

Serwer aplikacji (np. GlassFish) oznacza: * Może zarządzać aplikacjami Java EE (zwykle serwletami / JSP i EJB).

Początkującym prawdopodobnie lepiej pozostać przy prostym kontenerze serwletów.

Crroods
źródło