Adaptateur d'objet portable

Un adaptateur d'objet est la méthode principale d'un objet pour accéder aux services ORB, tels que la génération de référence d'objet. Un adaptateur d'objet portable exporte des interfaces standard vers l'objet.

Un adaptateur d'objet a les principales responsabilités suivantes :
  • Génération et interprétation des références d'objet.
  • Activation de l'appel de méthode.
  • Activation et désactivation d'objet et d'implémentation.
  • Mappage des références d'objet aux implémentations d'objet correspondantes.
Cette image montre la relation entre l'ORB, l'adaptateur d'objet, le squelette et l'implémentation d'objet.

Dans CORBA 2.1 et les versions antérieures, tous les fournisseurs ORB implémentaient un adaptateur d'objet appelé l'adaptateur d'objet de base. Un adaptateur d'objet de base ne pouvait jamais être spécifié complètement avec un IDL CORBA standard. Par conséquent, les fournisseurs implémentaient les adaptateurs d'un grand nombre de manières différentes. Par conséquent, les programmeurs ne pouvaient pas écrire des implémentations serveur totalement portables entre différents produits ORB. Une première tentative de définir une interface d'adaptateur d'objet standard a été effectuée dans CORBA 2.1. Avec CORBA v.2.3, le groupe OMG a publié la version corrigée finale pour une interface standard pour l'adaptateur d'objet. Cet adaptateur s'appelle un adaptateur POA (Portable Object Adapter).

Voici quelques-unes des principales caractéristiques de la spécification POA :
  • Permet aux programmeurs de créer des implémentations d'objet et serveur portables entre différents produits ORB.
  • Fournit le support pour les objets persistants. Le support permet aux objets de persister sur plusieurs durées de vie de serveur.
  • Active de manière transparente le support des objets.
  • Associe des informations de politique aux objets.
  • Permet à plusieurs instances distinctes du POA d'exister dans un ORB.

Pour plus d'informations sur l'adaptateur POA, consultez la spécification CORBA v.2.3 (formal/99-10-07).

L'ORB IBM® prend en charge la spécification POA et l'adaptateur d'objet de base propriétaire précédent. Par défaut, le compilateur RMI génère des liens RMI-IIOP pour les serveurs lorsqu'il est utilisé avec l'option -iiop. Ces liens reposent sur l'adaptateur d'objet de base. Lorsqu'une implémentation serveur utilise l'interface POA, vous devez ajouter l'option -poa au compilateur rmic pour générer les liens appropriés.

Si vous voulez implémenter un objet en utilisant l'adaptateur POA, l'application serveur doit obtenir un objet POA. Lorsque l'application serveur appelle la méthode ORB resolve_initial_reference("RootPOA"), l'ORB retourne la référence à l'objet POA principal qui contient les politiques par défaut. Pour la liste de toutes les politiques POA, consultez la spécification CORBA. Vous pouvez créer des POA sous forme d'objets enfant RootPOA qui peuvent contenir des politiques différentes. Cette structure permet de gérer différents groupes d'objets séparément et de partitionner l'espace de nom des ID d'objet.

Enfin, un POA gère les ID d'objet et les serviteurs actifs. Un serviteur actif est un objet de programmation qui existe en mémoire. Le serviteur est enregistré avec le POA, car une ou plusieurs identités d'objet associées ont été utilisées. L'ORB et le POA coopèrent pour déterminer le serviteur sur lequel l'opération demandée par le client doit être démarrée. En utilisant des API POA, vous pouvez créer une référence pour l'objet, associez un ID d'objet et activer le serviteur de l'objet. Une mappe des ID d'objet et des serviteurs actifs est stockée dans le POA. Un POA fournit également un serviteur par défaut utilisé lorsque aucun serviteur actif n'a été enregistré. Vous pouvez enregistrer une implémentation donnée de ce serviteur par défaut. Vous pouvez également enregistrer un gestionnaire de serviteur, un objet qui gère l'association d'un ID d'objet et d'un serviteur.
Cette image montre un exemple d'architecture d'adaptateur d'objet portable.

Le gestionnaire POA est un objet qui encapsule l'état de traitement d'un ou de plusieurs POA. Vous pouvez contrôler et modifier l'état de tous les POA en utilisant des opérations dans le gestionnaire POA.

L'activateur d'adaptateur est un objet qu'utilise un développeur d'application pour activer les POA enfant.