wake-up-neo.com

Unterschied zwischen einem Anwendungsserver und einem Servlet-Container?

Ich versuche den Unterschied zwischen einem vollwertigen Anwendungsserver (z. B. Weblogic, JBoss usw.) und einem Servlet-Container (Tomcat, Jetty usw.) zu verstehen.

Wie unterscheiden sie sich und wann welche?

Vielen Dank,

109
Pushkar

Ein Servlet-Container unterstützt nur die Servlet-API (einschließlich JSP, JSTL).

Ein Anwendungsserver unterstützt das gesamte JavaEE - EJB, JMS, CDI, JTA, die Servlet-API (einschließlich JSP, JSTL) usw.

Es ist möglich, die meisten JavaEE-Technologien auf einem Servlet-Container auszuführen, Sie müssen jedoch eine eigenständige Implementierung der jeweiligen Technologie installieren.

167
Bozho

Im Allgemeinen beschränkt sich ein Servlet-Container mehr oder weniger auf die Implementierung der J2EE-Servlet-Spezifikation. Außerdem liegt der Schwerpunkt auf der Laufzeitumgebung und weniger auf der Bereitstellung zusätzlicher Tools.

Im Gegensatz dazu implementiert ein vollwertiger Anwendungsserver den gesamten J2EE-Stack. Darüber hinaus sind alle Tools und Integrationsmöglichkeiten vorhanden. Ein Anwendungsserver verfügt normalerweise über erweiterte Administrationsoberflächen, unterstützt Clustering und andere Funktionen, die hauptsächlich in der Entwicklung von High-End-Systemen verwendet werden.

Für einen Anfänger ist es wahrscheinlich besser, bei einem einfachen Servlet-Container zu bleiben, da die Lernkurve dort viel weniger steil ist.


Bearbeiten

@Apache Fan: Es kommt auf die Besonderheiten Ihrer Situation an, wie unter anderem vorhandene Systeme und Zukunftspläne. Ich denke nicht, dass ein generischer Flussdiagrammansatz hier anwendbar ist.

Die Auswahl der Plattform erfolgt in der Regel durch Abwägen der spezifischen Anforderungen gegen die Kenntnis der betreffenden Systeme aus erster Hand.

Die Frage gibt jedoch keine Hinweise auf die Bewertungskriterien. Sollte es Open Source sein? Ist eine Lieferantenunterstützung rund um die Uhr erforderlich? In was für eine Unternehmensumgebung sollte das System integriert werden? Sind Lizenzgebühren ein Problem? Irgendwelche Technologien oder Werkzeuge, die man haben muss? Etc.

Ohne das oben Genannte zu kennen, schießt es so ziemlich im Dunkeln.

14
Saul

Grundsätzlich ist ein Anwendungsserver in Java EE-Kontext eine auf einem Server installierte Software, die eine Java EE-Spezifikation implementiert (z. B. Java EE 7). Das bedeutet, dass eine solche Software (Anwendungsserver) in der Lage sein muss, Java EE-Anwendungen auszuführen.

Java EE definiert 4 Domänen, die sogenannten Container :

  • Applet-Behälter,
  • Anwendungsclient-Container,
  • Webcontainer und
  • EJB-Container.

Zwei Container sind Teil des Anwendungsservers (EJB- und Web-Container) und zwei andere sind Teil des Client-Computers.

JBoss und Weblogic sind Anwendungsserver, Tomcat und Jetty sind Webcontainer. Deshalb können JBoss und Weblogic mit mehr Technologien umgehen als ein Webcontainer. Der Anwendungsserver kann EJB verwalten.

Servlet-Container ist nicht der passende Ausdruck für qualifizierte Tomcat- und Jetty-Benutzer, da er restriktiver ist. Tomcat kann auch JSP und JSF ausführen, nicht nur Servlets.

9
nanachimi

afaik, websphere und jboss sind vollständig kompatible j2ee-Server, die wie EJB über Servlets hinaus ausgeführt werden können, während Tomcat nur ein Servlet-Container ist und auf dem keine EJBs ausgeführt werden können.

2
asgs

In Laienbegriffen: Ein Webserver bedeutet: HTTP-Anfragen bearbeiten (normalerweise von Browsern).

Ein Servlet-Container (z. B. Tomcat) bedeutet: Er kann Servlets und JSP verarbeiten.

Ein Anwendungsserver (z. B. GlassFish) bedeutet: * Er kann Java EE-Anwendungen (normalerweise sowohl Servlet/JSP als auch EJBs) verwalten.

Für einen Anfänger ist es wahrscheinlich besser, bei einem einfachen Servlet-Container zu bleiben.

1
Crroods