Différence entre un serveur d'applications et un conteneur de servlet?
J'essaie de comprendre la différence entre un serveur d'applications à part entière (par exemple Weblogic, JBoss etc.) et un conteneur de servlet (Tomcat, Jetée etc.).
Comment diffèrent-ils et quand à utiliser?
Merci,
5 réponses
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 servlet-container, mais vous devez installer une implémentation autonome de la technologie particulière.
D'une manière générale, un conteneur de servlet se limite plus ou moins à l'implémentation de la spécification de Servlet J2EE. En outre, l'accent est mis sur l'environnement d'exécution et non pas tant 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 est livré avec tous les outils entrepreney 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 caractéristiques 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 servlets, car la courbe d'apprentissage est beaucoup moins raide.
Modifier
@ Apache Fan: cela dépend des spécificités de votre situation comme les systèmes existants et les plans futurs, entre autres choses. Je ne pense pas qu'une approche d'organigramme générique soit applicable ici.
La sélection de la plate-forme se fait généralement en pesant des exigences spécifiques contre la connaissance de première main des systèmes à l'étude.
Cependant, la question ne donne aucun indice quant aux critères d'évaluation. Devrait - il être open source? Est-ce que le soutien des fournisseurs 24 heures sur 24 est nécessaire? Quel genre d'environnement d'entreprise le système devrait-il 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 dans le noir.
Fondamentalement, un Application server dans le 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'applications) doit être capable d'exécuter une application Java EE.
Java EE définit 4 domaines, les conteneurs :
- conteneur D'Applet,
- conteneur client D'Application,
- conteneur Web, et
- conteneur EJB.
Deux les 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 traiter plus de technologies qu'un conteneur Web. Le serveur d'applications peut gérer EJB.
servlet container n'est pas l'expression appropriée pour Tomcat qualifié et Jetty car il est plus restrictif. Tomcat peut aussi exécutez JSP et JSF, pas seulement les Servlets.
Afaik, websphere et jboss sont des serveurs J2EE entièrement compatibles qui peuvent fonctionner au-delà des servlets, comme EJB, alors que Tomcat n'est qu'un conteneur de servlet et que vous ne pouvez pas y exécuter D'EJB.
En termes profanes : un serveur web signifie: Gérer les requêtes HTTP (généralement à partir 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 est probablement préférable de rester avec un simple conteneur de servlet.