Adattatore oggetto portatile

Un adattatore oggetto è il modo principale per un oggetto di accedere ai servizi ORB come la generazione di riferimenti oggetto. Un adattatore oggetto portatile esporta le interfacce standard nell'oggetto.

Le principali responsabilità di un adattatore oggetto sono:
  • Generazione e interpretazione di riferimenti di oggetti.
  • Abilitazione della chiamata al metodo.
  • Attivazione e disattivazione dell'oggetto e dell'implementazione.
  • Associazione dei riferimenti degli oggetti alle implementazioni degli oggetti corrispondenti.
Questa immagine mostra la relazione tra l'ORB, l'adattatore oggetto, la struttura e l'implementazione dell'oggetto.

Per CORBA 2.1 e versioni precedenti, tutti i fornitori ORB implementavano un adattatore oggetto, noto come adattatore oggetto di base. Non è stato possibile specificare un adattatore oggetto di base con un IDL CORBA standard. Pertanto, i fornitori hanno implementato gli adattatori in molti modi diversi. Il risultato è stato che i programmatori non sono stati in grado di scrivere implementazioni del server che fossero realmente portabili tra i diversi prodotti ORB. Un primo tentativo di definizione di un'interfaccia adattatore oggetti standard è stato eseguito in CORBA 2.1. Con CORBA v.2.3, il gruppo OMG ha rilasciato la versione finale corretta di un'interfaccia standard per l'adattatore oggetto. Questo adattatore è noto come POA (Portable Object Adapter).

Alcune delle caratteristiche principali della specifica POA sono:
  • Consente ai programmatori di creare implementazioni di oggetti e server portabili tra diversi prodotti ORB.
  • Fornire supporto per gli oggetti persistenti. Il supporto consente agli oggetti di persistere per diverse durate del server.
  • Supporta l'attivazione trasparente degli oggetti.
  • Associare le informazioni sulla politica agli oggetti.
  • Consentire a più istanze distinte del POA di esistere in un ORB.

Per ulteriori dettagli sul POA, consultare la specifica CORBA v.2.3 (formal/99-10-07).

L'ORB IBM® supporta sia la specifica POA che l'adattatore oggetto di base proprietario precedente. Per impostazione predefinita, il compilatore RMI, quando utilizzato con l'opzione -iiop , genera collegamenti RMI - IIOP per i server. Questi legami si basano sull'adattatore oggetto di base. Quando un'implementazione server utilizza l'interfaccia POA, è necessario aggiungere l'opzione -poa al compilatore rmic per generare i collegamenti pertinenti.

Per implementare un oggetto utilizzando il POA, l'applicazione server deve ottenere un oggetto POA. Quando l'applicazione server richiama il metodo ORB resolve_initial_reference("RootPOA"), l'ORB restituisce il riferimento all'oggetto POA principale che contiene le politiche predefinite. Per un elenco di tutte le politiche POA, consultare la specifica CORBA. È possibile creare nuovi POA come oggetti figlio di RootPOA. Questi oggetti child possono contenere politiche differenti. Questa struttura consente di gestire diverse serie di oggetti separatamente e di partizionare lo spazio dei nomi degli ID oggetto.

Infine, un POA gestisce gli ID oggetto e i servant attivi. Un servant attivo è un oggetto di programmazione che esiste in memoria. Il servant è registrato con il POA perché è stata utilizzata una o più identità oggetto associate. L'ORB e il POA cooperano per determinare quale servant avvia l'operazione richiesta dal client. Utilizzando le API POA, è possibile creare un riferimento per l'oggetto, associare un ID oggetto e attivare il servant per quell' oggetto. Una mappa di ID oggetto e servant attivi viene memorizzata all'interno del POA. Un POA fornisce anche un servant predefinito che viene utilizzato quando non è stato registrato alcun servant attivo. È possibile registrare una particolare implementazione di questo servant predefinito. È anche possibile registrare un gestore servant, che è un oggetto per la gestione dell'associazione di un ID oggetto con un particolare servant.
Questa immagine mostra un'architettura dell'adattatore di oggetti portatile di esempio.

Il gestore POA è un oggetto che incapsula lo stato di elaborazione di uno o più POA. È possibile controllare e modificare lo stato di tutti i POA utilizzando le operazioni sul gestore POA.

L'attivatore dell'adattatore è un oggetto che uno sviluppatore di applicazioni utilizza per attivare i POA child.