Conteneurs Java EE vs Conteneurs Web

Je suis relativement nouveau sur Java EE / EJB, et j’ai lu beaucoup de choses sur les conteneurs Java EE. J’ai eu de l’expérience avec un conteneur Web (fichier WAR dans jboss). Je suis également conscient que Jboss peut également être utilisé comme conteneur Java EE.

Ma question est la suivante: quelle est la différence entre un conteneur Java EE et un conteneur Web?

Je sais que Java EE peut également contenir un fichier .war. Sont-ils différents et quelles sont leurs différences? Existe-t-il un fournisseur de préférences spécifique, ce qui est mieux?

Tout d’abord, “J2EE” est une abréviation obsolète, elle s’appelle désormais simplement “Java Enterprise Edition” ou Java EE.

Contrairement au conteneur de servlets (par exemple, Tomcat), les serveurs d’applications Java EE “complets” contiennent également un conteneur EJB. Les EJB sont des Java Enterprise Beans et vous pouvez en apprendre beaucoup sur eux par exemple ici (chapitre IV). Les EJB sont désormais en version 3.2 (Java EE 7 et Java EE 8), les versions précédentes sont 3.1 (Java EE 6) et 3.0 (Java EE 5); Cependant, la plus grande différence est entre v2 et v3.

Les EJB sont conçus pour conserver une logique métier de votre application. Par exemple, le bean session sans état peut calculer quelque chose ou représenter un service Web ou tout ce que votre application doit faire. Les beans pilotés par message peuvent écouter les files d’attente de messages. Ils sont donc utiles si vous souhaitez une communication asynchrone. Les haricots Singleton garantissent une instance par haricot, etc.

En ce qui concerne le type de fichier, EJB est compressé dans un fichier .jar, une application Web dans un fichier .war, et si vous voulez les mélanger dans une seule application, ce serait le fichier .ear (“archive d’entreprise”).

Outre les EJB, le serveur d’applications “complet” prend également en charge les transactions, la sécurité, les ressources JDBC … Je recommande fortement de l’utiliser sur un conteneur de servlets, mais les avantages sont complexes et vous devrez donc passer un temps raisonnable apprendre à traiter avec, par exemple, Websphere ( Payara et WildFly sont beaucoup plus simples et sont mes préférés). JBoss et Weblogic sont également très populaires, et si vous connaissez bien Tomcat, consultez TomEE .

Conteneur Java EE: gère l’exécution de l’exécution d’EJB, JMS, JTA sur le serveur Java EE, par exemple JBoss, Glassfish.

Conteneur Web: gère l’exécution des pages Web, des servlets et de certains composants EJB pour les applications Java EE. Les composants Web et leur conteneur s’exécutent sur le serveur Web tel que Jetty, tomcat.

Le conteneur Web et le conteneur EJB sont des sous-ensembles de conteneurs Java EE. Les conteneurs Java EE englobent également le conteneur du client d’application et le conteneur d’applet .

Voici ce que dit la doc :

Le processus de déploiement installe les composants d’application Java EE dans les conteneurs Java EE.

  • Serveur Java EE : partie d’exécution d’un produit Java EE. Un serveur Java EE fournit EJB [conteneur et conteneur Web] *.

  • Conteneur Enterprise JavaBeans (EJB) : gère l’exécution des beans enterprise pour les applications Java EE. Les beans Enterprise et leur conteneur s’exécutent sur le serveur Java EE.

  • Conteneur Web : gère l’exécution de la page JSP et des composants de servlet pour les applications Java EE. Composants Web et leur
    conteneur s’exécute sur le serveur Java EE.

  • Conteneur du client d’application : gère l’exécution des composants du client d’application. Les clients d’application et leur conteneur s’exécutent sur le client.

  • Conteneur d’applet : gère l’exécution des applets. Se compose d’un navigateur Web et d’un plug-in Java fonctionnant sur le client ensemble.

* Dans le document, ils utilisent le formulaire plurial, mais en réalité, vous ne disposez que d’un seul conteneur Web et d’un seul conteneur EJB par serveur Java EE.

Je pense que peut-être la différence entre eux sont les protocoles qu’ils prennent en charge。

Par exemple try nous n’essayons pas de gérer la transaction dans un conteneur Web , comme tomcat try nous essayons généralement de contrôler dans le web-proj qui a été déployé dans tomcat; le serveur web / app comme ejb prend le contraire。

Un conteneur EE java est une solution de serveur d’applications qui prend en charge un conteneur Web, EJB 3 et d’autres API et services Java EE, Oracle WebLogic, GlassFish, IBM WebSphere, JBoss Application Server et Caucho Resin. .. Espérons qu’il répondrait à votre requête