Unterschied zwischen einem Anwendungsserver und einem Servlet-Container?

114

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,

Pushkar
quelle
@Jigar: Wenn Sie die genaue Frage kennen, die dieses Duplikat enthält, sollten Sie tatsächlich abstimmen, um es als Duplikat zu schließen.
Joachim Sauer
1
@ Joachim Ich habe nicht gewählt, um zu schließen.
Jigar Joshi
2
weil es kein Duplikat ist. :)
Bozho
1
oops ... zögern Sie nicht mich zu ignorieren, es scheint, dass ich noch nicht meinen notwendigen Koffeinspiegel erreicht habe.
Joachim Sauer

Antworten:

171

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.

Bozho
quelle
1
+1 von meiner Seite, gute Unterschiede. Noch mehr Unterschiede @Bozho
Deepak
1
@Bozho: +1: Eine Sache, die ich bisher an Ihnen bemerkt habe, sind die simplen Begriffe, die Sie oft in Ihre erstaunlichen Antworten einbetten.
Shirgill Farhan
1
es ist sehr nützlich @Bozho
Xstian
@Bozho Können Servlet-Container als Server mit einer Teilmenge der Funktionen von * Anwendungsserver "aufgerufen werden? Und im Grunde funktionieren sie identisch (für die beiden gemeinsamen Anwendungsfälle).
Kuldeep Yadav
15

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.

Saul
quelle
Ich frage aus Unternehmenssicht.
Pushkar
11

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 :

  • Applet-Behälter,
  • Anwendungsclientcontainer,
  • Webcontainer und
  • EJB-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.

Nanachimi
quelle
2

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.

Fragen
quelle
Unter welche Kategorie fällt dann der Apache-Server?
Rolling Stone
Apache HTTP Server ist ein ausgewachsener Webserver .
Asgs
2

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.

Crroods
quelle