web-dev-qa-db-fra.com

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

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

Comment diffèrent-ils et quand utiliser lesquels?

Merci,

109
Pushkar

Un conteneur de servlet ne prend en charge que 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 servlet (y compris JSP, JSTL), etc.

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

167
Bozho

De manière générale, un conteneur de servlet se limite plus ou moins à la mise en œuvre de la spécification J2EE Servlet. En outre, l'accent est mis sur l'environnement d'exécution plutôt que sur la fourniture d'outils supplémentaires.

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

Pour un débutant, il vaut probablement mieux rester avec un simple conteneur de servlets, car la courbe d'apprentissage y est beaucoup moins raide.


Éditer

@Apache Fan: Cela dépend des détails de votre situation, tels que les systèmes existants et les projets futurs. Je ne pense pas qu'une approche d'organigramme générique est applicable ici.

La sélection de la plate-forme est généralement effectuée en comparant les exigences spécifiques à la connaissance directe des systèmes considérés.

Cependant, la question ne donne aucun indice sur les critères d'évaluation. Devrait-il être open source? Une assistance 24 heures sur 24 est-elle nécessaire? Quel type d'environnement d'entreprise le système doit-il intégrer? Les droits de licence sont-ils un problème? Des technologies ou des outils indispensables? Etc.

Sans savoir ce qui précède, il est presque impossible de tirer dans le noir.

14
Saul

Fondamentalement, un serveur d'application in Java Le contexte EE est un logiciel installé sur un serveur et qui en implémente un Java EE (Java EE Cela signifie par exemple que ce logiciel (serveur d’application) doit pouvoir exécuter 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'applications (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 utiliser 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 les servlets.

9
nanachimi

afaik, websphere et jboss sont entièrement conformes. j2ee-server peut fonctionner au-delà des servlets, comme EJB, alors que Tomcat est juste un conteneur de servlets et que vous ne pouvez pas exécuter d’EJB dessus.

2
asgs

En termes simples, n serveur web signifie: Traitement des requêtes HTTP (généralement par les navigateurs).

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

n serveur d'applications (par exemple, GlassFish) signifie: * Il peut gérer 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 servlets.

1
Crroods