web-dev-qa-db-fra.com

Définition d'un conteneur Java

J'ai lu\entendu plusieurs fois à propos de Java tels qu'un conteneur de servlet, cependant, je n'arrive pas à trouver une bonne définition de ce qu'est un conteneur dans l'entreprise Java monde.

Quelqu'un connaît-il une bonne définition d'une entreprise Java container?

41
javamonkey79

Se référant plus généralement au modèle Container (dont une entreprise Java pourrait être considéré comme une spécialisation), le livre Server Component Patterns par M.Volter, et al. offre ce qui suit:

[UN CONTENEUR fournit] un environnement d'exécution qui est chargé d'ajouter les préoccupations techniques aux COMPOSANTS ... Conceptuellement, il enveloppe les COMPOSANTS, donnant ainsi aux clients l'illusion de préoccupations fonctionnelles et techniques étroitement intégrées.

Des exemples de ces problèmes techniques incluent la sécurité, la gestion des transactions, la journalisation, etc.

20
Brandon E Taylor

Les conteneurs communs dans Java EE sont le conteneur de servlet et le conteneur EJB, et je les vois comme des exemples de conteneurs IoC (Inversion of Control). Les aspects cruciaux sont:

  1. Votre code n'a pas de main () ou "attendez ici une logique de demande" - le conteneur démarre et se configure lui-même, puis initialise votre code et délivre les demandes
  2. Votre code peut être l'une des nombreuses classes similaires (servlets dans un conteneur de servlets, EJB dans un conteneur EJB) dont les instances ont des cycles de vie à contrôler par le conteneur.
  3. Les demandes sont livrées à votre servlet ou EJB via un protocole défini par le conteneur, en utilisant des ressources (par exemple, des ports HTTP) contrôlés par le conteneur, et éventuellement avec une intelligence d'infrastructure considérable (regardez les files d'attente de requêtes HTTP, l'équilibrage de charge EJB, etc.)
  4. Des fonctions telles que le contrôle des transactions et la gestion de la sécurité apportent une valeur ajoutée considérable - comme le conteneur appelle votre code, il est bien placé pour l'implémenter de manière discrète.
  5. La fonctionnalité principale du conteneur est beaucoup IOC, le conteneur appelle votre code aux moments appropriés, mais le conteneur fournira également des API utiles que votre code peut appeler (par exemple, pour obtenir des contextes Servlet ou EJB).
40
djna

Conteneurs Java EE

Normalement, les applications multiniveaux client léger sont difficiles à écrire car elles impliquent de nombreuses lignes de code complexe pour gérer la gestion des transactions et des états, le multithreading, la mise en commun des ressources et d'autres détails complexes de bas niveau. L'architecture basée sur les composants et indépendante de la plate-forme Java EE rend les applications Java EE faciles à écrire car la logique métier est organisée en composants réutilisables. En outre, la = Java EE fournit des services sous-jacents sous la forme d'un conteneur pour chaque type de composant. Étant donné que vous n'avez pas à développer ces services vous-même, vous êtes libre de vous concentrer sur la résolution du problème commercial actuel.

http://download.Oracle.com/javaee/5/tutorial/doc/bnabo.html

7
Marek Sebera

La notion clé derrière un conteneur est inversion de contrôle , où les composants d'application à l'intérieur du conteneur peuvent être couplés de manière lâche avec d'autres composants d'application ainsi qu'avec des ressources de niveau inférieur dont ils dépendent. Pour Java ces ressources sont généralement des choses comme les connexions à la base de données, les connexions réseau, JNDI, etc.

Différents niveaux de conteneurs prennent en charge différentes spécifications, par exemple un conteneur Web/servlet comme Tomcat ne prend pas en charge certaines spécifications de niveau d'application comme EJB3, donc Tomcat ne peut pas câbler ensemble des ejb pour l'injection dans votre application.

5
jpredham

"Les conteneurs sont l'interface entre un composant et la fonctionnalité spécifique à la plate-forme de bas niveau qui prend en charge le composant. Avant qu'un composant Web, un bean entreprise ou un composant client d'application puisse être exécuté, il doit être assemblé dans un Java module EE et déployé dans son conteneur. "Voici ma source: http://docs.Oracle.com/javaee/1.4/tutorial/doc/Overview3.html

2
grepit

Un conteneur est un environnement d'exécution qui apporte du dynamisme. Il crée une réponse HTTP, convertit la requête HTTP en un objet et crée et gère le cycle de vie des servlets.

Java EE est la collection des spécifications utilisées pour résoudre des problèmes d'entreprise tels que la sécurité, l'évolutivité, la robustesse, la disponibilité, etc.

Un conteneur qui gère toutes les spécifications de Java EE est connu comme Java conteneur d'entreprise. Par exemple. Glassfish, JBoss etc. (BTW Tomcat n'est pas un conteneur EE, il l'est) conteneur Web)

2
Abinash

Il est responsable de la maintenance des composants individuels côté serveur, qui comprennent Java servlets, Java pages du serveur et Java face du serveur.

1
ben H