Java RMI-Introduzione

Pubblicità

RMI sta per Invocazione metodo remoto. È un meccanismo che consente a un oggetto residente in un sistema (JVM) di accedere/richiamare un oggetto in esecuzione su un’altra JVM.

RMI viene utilizzato per creare applicazioni distribuite; fornisce la comunicazione remota tra i programmi Java. È fornito nel pacchetto java.rmi.

Architettura di un’applicazione RMI

In un’applicazione RMI, scriviamo due programmi, un programma server (risiede sul server) e un programma client (risiede sul client).

  • All’interno del programma server, viene creato un oggetto remoto e il riferimento di tale oggetto viene reso disponibile per il client (utilizzando il registro di sistema).

  • Il programma client richiede gli oggetti remoti sul server e tenta di richiamare i relativi metodi.

Il diagramma seguente mostra l’architettura di un’applicazione RMI.

 Architettura RMI

Discutiamo ora i componenti di questa architettura.

  • Livello di trasporto: questo livello collega il client e il server. Gestisce la connessione esistente e imposta anche nuove connessioni.

  • Stub-Uno stub è una rappresentazione (proxy) dell’oggetto remoto al client. Risiede nel sistema client; agisce come un gateway per il programma client.

  • Scheletro-Questo è l’oggetto che risiede sul lato server. stub comunica con questo scheletro per passare la richiesta all’oggetto remoto.

  • RRL (Remote Reference Layer) – È il livello che gestisce i riferimenti fatti dal client all’oggetto remoto.

Funzionamento di un’applicazione RMI

I seguenti punti riassumono il funzionamento di un’applicazione RMI−

  • Quando il client effettua una chiamata all’oggetto remoto, viene ricevuto dallo stub che alla fine passa questa richiesta all’RRL.

  • Quando l’RRL lato client riceve la richiesta, richiama un metodo chiamato invoke () dell’oggetto remoteRef. Passa la richiesta all’RRL sul lato server.

  • L’RRL sul lato server passa la richiesta allo Scheletro (proxy sul server) che invoca infine l’oggetto richiesto sul server.

  • Il risultato viene passato fino al cliente.

Marshalling e Unmarshalling

Ogni volta che un client richiama un metodo che accetta parametri su un oggetto remoto, i parametri vengono raggruppati in un messaggio prima di essere inviati in rete. Questi parametri possono essere di tipo primitivo o oggetti. In caso di tipo primitivo, i parametri vengono messi insieme e ad esso viene allegata un’intestazione. Nel caso in cui i parametri siano oggetti, vengono serializzati. Questo processo è noto come marshalling.

Sul lato server, i parametri imballati vengono disaggregati e quindi viene richiamato il metodo richiesto. Questo processo è noto come unmarshalling.

Registro RMI

Registro RMI è uno spazio dei nomi in cui sono posizionati tutti gli oggetti server. Ogni volta che il server crea un oggetto, lo registra con i metodi RMIregistry (bind() o reBind ()). Questi sono registrati utilizzando un nome univoco noto come nome bind.

Per richiamare un oggetto remoto, il client ha bisogno di un riferimento di tale oggetto. A quel tempo, il client recupera l’oggetto dal registro di sistema utilizzando il suo nome bind (utilizzando il metodo lookup ()).

La seguente illustrazione spiega l’intero processo −

Registro

Obiettivi di RMI

Di seguito sono riportati gli obiettivi di RMI−

  • Per ridurre al minimo la complessità dell’applicazione.
  • Per preservare la sicurezza del tipo.
  • Raccolta dei rifiuti distribuita.
  • Ridurre al minimo la differenza tra l’utilizzo di oggetti locali e remoti.
Pubblicità



+