Différence entre un serveur d'applications et un conteneur de servlet?

115

J'essaye de comprendre la différence entre un serveur d'application à part entière (par exemple Weblogic, JBoss etc.) et un conteneur de servlet (Tomcat, Jetty etc.).

En quoi diffèrent-ils et quand les utiliser?

Merci,

Pushkar
la source
@Jigar: si vous connaissez la question précise que cela duplique, alors vous devriez voter pour la fermer en double.
Joachim Sauer
1
@Joachim Je n'ai pas voté pour fermer.
Jigar Joshi
2
car ce n'est pas un doublon. :)
Bozho
1
oups ... n'hésitez pas à m'ignorer, il semble que je n'ai pas encore atteint mon niveau de caféine nécessaire.
Joachim Sauer

Réponses:

171

Un conteneur de servlet prend en charge uniquement l'API de servlet (y compris JSP, JSTL).

Un serveur d'applications prend en charge l'ensemble de JavaEE - EJB, JMS, CDI, JTA, l'API de servlet (y compris JSP, JSTL), etc.

Il est possible d'exécuter la plupart des technologies JavaEE sur un conteneur de servlet, mais vous devez installer une implémentation autonome de la technologie particulière.

Bozho
la source
1
+1 de mon côté, bonnes différences.Any more differences @Bozho
Deepak
1
@Bozho: +1: Une chose que j'ai jusqu'à présent remarquée chez vous, ce sont les termes simplistes que vous intégrez souvent dans vos réponses étonnantes.
Shirgill Farhan
1
c'est très utile @Bozho
Xstian
@Bozho Les conteneurs de servlets peuvent-ils être appelés en tant que serveurs avec un sous-ensemble de capacités de * serveur d'application ". Et au fond, ils fonctionnent de manière identique (pour les cas d'utilisation communs aux deux).
Kuldeep Yadav
15

De manière générale, un conteneur de servlet se limite plus ou moins à l'implémentation de la spécification Servlet J2EE. En outre, il se concentre sur l'environnement d'exécution et pas tellement sur la fourniture d'outils supplémentaires.

En revanche, un serveur d'applications à part entière implémente toute la pile J2EE; De plus, il est livré avec tous les outils d'entreprise et les possibilités d'intégration. Un serveur d'applications a généralement des interfaces d'administration avancées, il prend en charge le clustering et d'autres fonctionnalités utilisées principalement dans le développement de systèmes haut de gamme.

Pour un débutant, il est probablement préférable de rester avec un simple conteneur de servlet, car la courbe d'apprentissage y est beaucoup moins raide.


Éditer

@Apache Fan: Cela dépend des spécificités de votre situation comme les systèmes existants et les projets futurs entre autres. Je ne pense pas qu'une approche générique d'organigramme soit applicable ici.

La sélection de la plate-forme se fait généralement en évaluant les exigences spécifiques par rapport à la connaissance de première main des systèmes considérés.

Cependant, la question ne donne aucun indice sur les critères d'évaluation. Doit-il être open source? Un support fournisseur 24 heures sur 24 est-il nécessaire? À quel type d'environnement d'entreprise le système doit-il s'intégrer? Les frais de licence sont-ils un problème? Des technologies ou des outils indispensables? Etc.

Sans savoir ce qui précède, c'est à peu près photographier dans le noir.

Saul
la source
Je demande du point de vue de l'entreprise.
Pushkar
11

Fondamentalement, un serveur d'application dans un contexte Java EE est un logiciel installé sur un serveur et qui implémente une spécification Java EE (Java EE 7 par exemple). Cela signifie qu'un tel logiciel (serveur d'application) doit pouvoir exécuter l'application Java EE.

Java EE définit 4 domaines, appelés conteneurs :

  • Conteneur d'applet,
  • Conteneur client d'application,
  • Conteneur Web, et
  • Conteneur EJB.

Deux conteneurs font partie du serveur d'application (EJB et conteneur Web) et deux autres font partie de l'ordinateur client.

JBoss et Weblogic sont des serveurs d'applications, Tomcat et Jetty sont des conteneurs Web. C'est pourquoi JBoss et Weblogic peuvent gérer plus de technologies qu'un conteneur Web. Le serveur d'applications peut gérer les EJB.

Le conteneur de servlet n'est pas l'expression appropriée pour qualifier Tomcat et Jetty car il est plus restrictif. Tomcat peut également exécuter JSP et JSF, pas seulement des servlets.

nanachimi
la source
2

afaik, websphere et jboss sont des serveurs j2ee entièrement compatibles qui peuvent fonctionner au-delà des servlets, comme EJB, alors que Tomcat est juste un conteneur de servlet et vous ne pouvez pas exécuter d'EJB dessus.

asgs
la source
alors sous quelle catégorie le serveur Apache appartient-il?
Rolling Stone
Apache HTTP Server est un serveur Web à part entière .
asgs
2

En termes simples: Un serveur Web signifie: Gérer les requêtes HTTP (généralement des navigateurs).

Un conteneur de servlet (par exemple Tomcat) signifie: Il peut gérer les servlets et JSP.

Un serveur d'applications (par exemple GlassFish) signifie: * Il peut gérer des applications Java EE (généralement à la fois servlet / JSP et EJB).

Pour un débutant, il vaut probablement mieux rester avec un simple conteneur de servlet.

Crroods
la source