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,



@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.


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.


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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.