2013-06-19 6 views
38

Ich bin relativ neu in Java EE/EJB, und ich habe viel über Java EE Container gelesen. Ich habe Erfahrung mit einem Web-Container (WAR-Datei in jboss) arbeiten. Mir ist auch bewusst, dass Jboss auch als Java EE Container verwendet werden kann.Java EE Container vs Web Container

Meine Frage ist, was ist der Unterschied zwischen einem Java EE-Container gegen einen Web-Container?

Ich weiß, Java EE kann auch eine WAR-Datei enthalten. Sind sie anders und was sind ihre Unterschiede? Gibt es irgendwelche Präferenzen für den Anbieter, was ist besser?

Antwort

78

Zunächst ist "J2EE" eine veraltete Abkürzung, es heißt jetzt einfach "Java Enterprise Edition" oder Java EE.

Im Gegensatz zum Servlet-Container (z. B. Tomcat) enthalten "vollständige" Java EE-Anwendungsserver auch einen EJB-Container. EJB sind Enterprise Java Beans und Sie können viel über sie lesen, zum Beispiel here (Kapitel IV). EJBs sind jetzt in Version 3.2 (Java EE 7 und Java EE 8), frühere Versionen sind 3.1 (Java EE 6) und 3.0 (Java EE 5); Der größte Unterschied ist jedoch zwischen v2 und v3.

EJBs wurden entwickelt, um eine Geschäftslogik Ihrer Anwendung zu erhalten. Zum Beispiel kann statuslose Session-Bean etwas berechnen oder einen Web-Service darstellen oder was auch immer Ihre Anwendung tun muss. Message-driven Beans können Nachrichtenwarteschlangen abhören, daher sind sie nützlich, wenn Sie eine asynchrone Kommunikation wünschen. Singleton-Beans garantieren eine Instanz pro Bean usw.

In Bezug auf den Dateityp wird EJB in eine .jar-Datei, Webanwendung in eine WAR-Datei gepackt, und wenn Sie sie in einer einzigen Anwendung mischen möchten, wäre das die .ear-Datei ("Unternehmensarchiv").

Neben EJBs kümmert sich der "vollständige" Anwendungsserver auch um Transaktionen, Sicherheit, JDBC-Ressourcen ... Ich würde es sehr empfehlen, es über einen Servlet-Container zu verwenden, aber die Vorteile kommen mit der Komplexität, so dass Sie eine ausgeben müssen angemessene Zeit, um zu lernen, wie man zB mit Websphere (Payara und WildFly sind viel einfacher und sind meine Favoriten). JBoss und Weblogic sind auch ziemlich populär, und wenn Sie mit Tomcat vertraut sind, betrachten Sie TomEE.

+0

+1 für die vollständige Antwort, ich bin auf der Suche nach einem Vergleich der Anwendungsserver, die Sie erwähnt haben. in Bezug auf Komplexität/Leichtigkeit der Integration etc. – mel3kings

+1

@ melt321 Froh, zu helfen. Bezüglich des Vergleichs habe ich nur mit Websphere und Glassfish gearbeitet, also werde ich andere Artikel empfehlen: http://hwellmann.blogspot.com/2011/06/java-ee-6-server-comparison.html, http://stackoverflow.com/questions/217827/which-is-the-best-open-source-application-server, http://stackoverflow.com/questions/1224822/websphere-vs-weblogic –

27

Java EE-Container: Verwaltet die Ausführung von EJB, JMS, JTA, die auf dem Java EE-Server ausgeführt werden, z. JBoss, Glasfisch.

Web-Container: Verwaltet die Ausführung von Webseiten, Servlets und einigen EJB-Komponenten für Java EE-Anwendungen. Web-Komponenten und deren Container laufen auf dem Web-Server wie Jetty, Tomcat.

0

Ich denke, vielleicht der Unterschied zwischen ihnen sind die Protokolle, die sie unterstützen.

Zum Beispiel haben wir nicht versuchen, die Transaktion in einem Web-Container zu verwalten, wie tomcat, wir in der Regel in der Bahn zu steuern versuchen -proj, die in tomcat.while Web/App-Server wie ejb entfaltet das Gegenteil.

3

Der Web-Container und EJB-Container sind Teilmengen von Java EE-Containern. Java EE-Container umfassen auch den Anwendungs-Client-Container und Applet-Container.

Hier ist, was die doc sagt:

Der Deployment-Prozess installiert Container-Anwendung Java EE-Komponenten in den Java EE.

  • Java EE-Server: Die Laufzeit Teil eines Produkts Java EE. Ein Java EE-Server stellt EJB [Container und Webcontainer] * zur Verfügung.

  • Enterprise JavaBeans (EJB) Container: Verwaltet die Ausführung von Enterprise-Beans für Java EE-Anwendungen. Enterprise-Beans und ihr Container werden auf dem Java EE-Server ausgeführt.

  • Web-Container: Verwaltet die Ausführung von JSP-Seiten- und Servlet-Komponenten für Java EE-Anwendungen. Web-Komponenten und ihr
    Container werden auf dem Java EE-Server ausgeführt.

  • Anwendungsclientcontainer: Verwaltet die Ausführung von Anwendungsclientkomponenten. Anwendungsclients und ihr Container werden auf dem Client ausgeführt.

  • Applet-Container: Verwaltet die Ausführung von Applets. Besteht aus einem Webbrowser und einem Java Plug-in, die zusammen auf dem Client ausgeführt werden.

* Im doc verwenden sie die plurial Form, aber eigentlich nur Sie einen Web-Container und ein EJB-Container pro Java EE-Server verfügen.

0

Ein Java EE Container ist eine Anwendungsserverlösung, die einen Webcontainer, EJB 3 und andere Java EE APIs und Dienste, Oracle WebLogic Server, GlassFish Server, IBM WebSphere Anwendungsserver, JBoss Application Server und Caucho Resin unterstützt Java EE containers ... Ich hoffe, es würde Ihre Frage beantworten