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 zu verwenden?
Vielen Dank,
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 zu verwenden?
Vielen Dank,
Antworten:
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.
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 nicht so sehr auf der Bereitstellung zusätzlicher Tools.
Im Gegensatz dazu implementiert ein vollwertiger Anwendungsserver den gesamten J2EE-Stack. Außerdem bietet es alle Tools und Integrationsmöglichkeiten für Unternehmen. Ein Anwendungsserver verfügt normalerweise über erweiterte Verwaltungsschnittstellen. Er 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: Dies hängt unter anderem von den Besonderheiten Ihrer Situation ab, z. B. von vorhandenen Systemen und zukünftigen Plänen. Ich denke nicht, dass ein generischer Flussdiagrammansatz hier anwendbar ist.
Die Auswahl der Plattform erfolgt normalerweise durch Abwägen spezifischer Anforderungen gegen das Wissen aus erster Hand über die betreffenden Systeme.
Die Frage gibt jedoch keine Hinweise auf die Bewertungskriterien. Sollte es Open Source sein? Ist eine Unterstützung des Anbieters rund um die Uhr erforderlich? In welche Unternehmensumgebung sollte das System integriert werden? Sind Lizenzgebühren ein Problem? Irgendwelche unverzichtbaren Technologien oder Werkzeuge? Etc.
Ohne das oben Genannte zu wissen, schießt es so ziemlich im Dunkeln.
Grundsätzlich ist ein Anwendungsserver im 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) Java EE-Anwendungen ausführen kann.
Java EE definiert 4 Domänen, die sogenannten Container :
Zwei Container sind Teil des Anwendungsservers (EJB und Webcontainer) und zwei weitere 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 mit einem Webcontainer. Der Anwendungsserver kann EJB verwalten.
Der Servlet-Container ist nicht der geeignete Ausdruck für qualifizierte Tomcat und Jetty, da er restriktiver ist. Tomcat kann auch JSP und JSF ausführen, nicht nur Servlets.
afaik, websphere und jboss sind vollständig kompatible j2ee-Server, die über Servlets wie EJB hinaus ausgeführt werden können, während Tomcat nur ein Servlet-Container ist und Sie keine EJBs darauf ausführen können.
In Laienbegriffen: Ein Webserver bedeutet: Verarbeitung von HTTP-Anforderungen (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 verwalten (normalerweise sowohl Servlet / JSP als auch EJBs).
Für einen Anfänger ist es wahrscheinlich besser, bei einem einfachen Servlet-Container zu bleiben.