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,
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,
Odpowiedzi:
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.
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.
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 :
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.
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.
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.