Les composants logiciels en interaction des applications d'entreprise distribuées nécessitent des services d'infrastructure sous-jacents, permettant aux composants distribués de communiquer entre eux, de coordonner leur travail, d'implémenter un accès sécurisé, etc. Cette section explique le rôle essentiel joué par un certain nombre de composants de Java ES dans la prestation de ces services d'infrastructure.
Lorsque vous concevez un système logiciel distribué, qu'il s'agisse essentiellement de composants au développement personnalisé ou de composants Java ES standard, vous devez incorporer un certain nombre de services d'infrastructure. Ces services fonctionnent sur plusieurs niveaux.
Les dépendances des services d'infrastructure de l'architecture d'une solution sont illustrées dans la Figure 2–2. Les niveaux représentés sur cette figure correspondent à une vue développée de la couche de service d'infrastructure de la Figure 1–1. La hiérarchie des services de la Figure 2–2 et les dépendances entre eux constituent une dimension importante de l'architecture logique d'une solution. Ces services d'infrastructure constituent la principale dimension de ces composants de services système Java ES (voir la section Composants de services système).
En général, les services présentés dans la figure ci-après se répartissent en trois grands groupes : les services de plate-forme du niveau inférieur, les services d'application du niveau supérieur et un groupe de services intermédiaires, ainsi nommés d'après leur emplacement entre les deux autres groupes.
Les descriptions suivantes des différents niveaux de services d'infrastructure font référence aux artefacts du langage de programmation Java, le cas échéant ; ils sont répertoriés du niveau le plus bas au niveau le plus élevé, comme illustré dans la Figure 2–2 :
Plates-formes de système d'exploitation : assure la prise en charge de base de tout processus exécuté sur l'ordinateur. Le système d'exploitation gère les périphériques physiques ainsi que la mémoire, les threads et les autres ressources requises pour la prise en charge de Java Virtual Machine (machine JVMTM).
Transport réseau : assure la prise en charge réseau de base pour les communications entre les composants d'application distribués exécutés sur des ordinateurs différents. Ces services incluent la prise en charge des protocoles, tels que TCP et HTTP. Les autres protocoles de communication de niveau élevé (voir le niveau messagerie) dépendent de ces services de transport de base.
Persistance : assure la prise en charge pour les accès et le stockage des données statiques (informations sur l'utilisateur, le répertoire ou la configuration) et des données d'application dynamiques (informations fréquemment mises à jour).
Messagerie : assure la prise en charge de la communication synchrone et asynchrone entre les composants d'application. La messagerie synchrone correspond à l'envoi et à la réception de messages en temps réel. Elle comporte également une fonction d'invocation de méthode distante (RMI) entre les composants J2EE et des interactions SOAP avec les services Web. La messagerie asynchrone, quant à elle, correspond à une communication pour laquelle l'envoi d'un message ne dépend pas de la capacité du destinataire à le recevoir immédiatement. Les spécifications de messagerie asynchrone, par exemple Java Message Service (JMS) et ebXML, prennent en charge une fiabilité garantie et d'autres sémantiques de messagerie.
Exécution : assure la prise en charge requise par tout modèle de composant distribué, tel qu'un modèle J2EE ou CORBA. Outre l'invocation de méthode distante requise pour les composants distribués de couplage étroit, les services d'exécution incluent la gestion de l'état du composant (cycle de vie), la gestion de pools de threads, la synchronisation (verrouillage mutex), les services de persistance, le contrôle des transactions distribuées et le traitement des exceptions distribuées. Dans un environnement J2EE, ces services d'exécution sont fournis par des conteneurs EJB, Web et des beans gérés par message dans un serveur d'applications ou un serveur Web.
Sécurité et stratégie : assure la prise en charge des accès sécurisés aux ressources d'application. Ces services incluent la prise en charge des stratégies régissant les accès des groupes ou les accès basés sur les rôles aux ressources distribuées, ainsi que les possibilités de connexion unique. La connexion unique permet que l'authentification d'un utilisateur sur un service d'un système distribué soit appliquée automatiquement aux autres services (composants J2EE, services métier et services Web) du système.
Collaboration utilisateur : fournit des services qui jouent un rôle essentiel dans la prise en charge de la communication directe entre les utilisateurs et la collaboration entre les utilisateurs d'environnements d'entreprise et Internet. Ces services sont des services d'entreprise de niveau application, fournis en principe par des serveurs autonomes (par exemple, un serveur de courrier ou un serveur de calendrier).
Intégration : fournit les services qui regroupent les services d'exploitation existants. L'intégration fournit une interface commune qui permet d'accéder aux services comme dans un portail ou en intégrant ces services au moyen d'un moteur de processus qui les coordonne au sein d'un flux de travaux. L'intégration peut également avoir lieu sous forme d'interactions interentreprises entre différentes entreprises.
Les niveaux de service présentés dans la Figure 2–2 reflètent une dépendance des services d'infrastructure les uns par rapport aux autres, des services de système d'exploitation de bas niveau aux services d'intégration et d'application de plus haut niveau. En règle générale, chaque service dépend des services situés en aval et prend en charge les services en amont. Toutefois, la Figure 2–2, ne représentent pas une couche stricte de services d'infrastructure. Les services de niveau supérieur peuvent interagir directement avec les services de niveau inférieur sans dépendre des niveaux intermédiaires. Par exemple, certains services exécutables peuvent dépendre directement de services de plate-forme, sans nécessiter le moindre niveau de service intermédiaire. De plus, d'autres niveaux de services, tels que le contrôle ou le service de gestion, peuvent être inclus dans cette illustration conceptuelle.
Les composants de Java ES implémentent les niveaux de services d'infrastructure distribués illustrés à la Figure 2–2. Le positionnement des composants de services système au sein des différents niveaux est illustré dans la figure ci-après.
Les boîtes grisées dans la figure signalent des composants qui ne sont pas inclus dans Java ES. Les composants de collaboration utilisateur ne font pas partie de Java ES mais sont souvent déployés avec les composants Java ES et utilisés au sein d'architectures Java ES. Ces composants font partie de Sun Java Communications Suite et sont cités dans ce document à des fins d'illustration uniquement. Par ailleurs, les plates-formes de systèmes d'exploitation ne font pas véritablement partie de Java ES ; toutefois, elles ont été incluses afin de montrer les plates-formes de systèmes d'exploitation sur lesquelles les composants Java ES sont pris en charge.
En général, chaque composant de service système Java ES présenté dans la Figure 2–3 dépend des composants situés au-dessous de lui dans l'infrastructure et prend en charge les composants se trouvant au-dessus. Ces relations de dépendance et de prise en charge sont un facteur clé dans la conception d'architectures logiques.
Le tableau ci-après montre les relations spécifiques entre les composants de services système Java ES, en partant du haut vers le bas, comme illustré dans la Figure 2–3.
Tableau 2–1 Relations entre les composants de service système Java ES