Je suis relativement nouveau dans Java EE/EJB et j'ai beaucoup lu sur les conteneurs Java EE. J'ai déjà travaillé 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 est également capable de contenir un fichier .war. Sont-ils différents et quelles sont leurs différences? Existe-t-il des préférences spécifiques au fournisseur qui soient meilleures?
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 (Tomcat, par exemple), les serveurs d'applications Java EE "complets" contiennent également un conteneur EJB. Les EJB sont des Enterprise Java Beans et vous pouvez en lire beaucoup par exemple here (chapitre IV). Les EJB sont maintenant à la version 3.2 (Java EE 7 et Java EE 8), les versions précédentes étant 3.1 (Java EE 6) et 3.0 (Java EE 5); Cependant, la plus grande différence se situe 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 gérés par message peuvent écouter les files de messages, elles 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. Si vous souhaitez les mélanger dans une seule application, il s’agit du 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 vous recommande fortement de l’utiliser sur un conteneur de servlets, mais les avantages viennent avec la complexité, vous devrez donc passer un temps raisonnable apprendre à gérer 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. Si vous connaissez bien Tomcat, jetez un oeil sur TomEE .
Conteneur Java EE: Gère l'exécution des EJB, JMS, JTA exécutés sur le serveur Java EE, par ex. 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 les conteneur du client d'application et conteneur de l'applet.
Voici ce que dit le doc :
Le processus de déploiement installe les composants de l'application Java EE dans le fichier Conteneurs Java EE.
Serveur Java EE: partie d'exécution d'un produit Java EE. Un serveur Java EE fournit un EJB [conteneur et conteneur Web] *.
Conteneur EJB (Enterprise JavaBeans): gère l'exécution des beans d'entreprise pour les applications Java EE. Haricots Enterprise et leurs conteneur exécuté sur le serveur Java EE.
Conteneur Web: gère l'exécution des composants de page et de servlet JSP pour les applications Java EE. Composants Web et leurs
conteneur exécuté sur le serveur Java EE.Conteneur client d'application: gère l'exécution des composants du client d'application. Les clients d'application et leur conteneur exécuté sur le client.
Conteneur d'applets: gère l'exécution des applets. Se compose d'un navigateur Web et d'un plug-in Java s'exécutant simultanément sur le client.
* Dans la doc, ils utilisent la forme plurielle, mais vous ne disposez en réalité que d'un conteneur Web et d'un conteneur EJB par serveur Java EE.
Les applications peuvent être classées comme suit: Application de bureau telle que l'interface graphique, Application Web telle que les pages Web dynamiques, Application d'entreprise qui traite du traitement métier de base.
Application d'entreprise: généralement peu d'interaction de l'utilisateur. Dans ce cas, si vous souhaitez que votre application interagisse avec des applications disparates distribuées sur un intranet/Internet à l'aide des services Web, JMS ou JTA (connexion au serveur de transaction Mainframe), vous avez besoin de conteneurs Java EE avec EJB et d'autres fonctionnalités de sécurité.
Conteneur Web: si vous souhaitez interagir avec une application distribuée à l'aide de JNI ou tout simplement parler au SGBDR, ou simplement restituer des pages Web statiques ou dynamiques, le conteneur Web vous suffit. Votre requête HTTP du navigateur peut appeler et exécuter des programmes Java via servlet. Le programme Java peut appeler l’API JDBC pour communiquer avec le SGBDR. De même, vous pouvez appeler un programme C ou Java depuis un autre serveur à l'aide de JNI ou de RMI.
Un conteneur Java EE est une solution de serveur d'applications prenant en charge un conteneur Web. EJB 3 et d'autres API et services Java EE, un serveur Oracle WebLogic, un serveur GlassFish, un serveur d'applications IBM WebSphere, un serveur JBoss Application et Caucho Resin sont des exemples de conteneurs Java EE. .. espérons qu'il répondrait à votre requête
Je pense que la différence entre eux réside peut-être dans les protocoles qu’ils prennent en charge
Par exemple, nous n'essayons pas de gérer la transaction dans un conteneur Web, comme Tomcat, mais nous essayons habituellement de contrôler le projet Web déployé dans Tomcat.