Introduzione a RMI - Invocazione di metodi remota
RMI (Remote Method Invocation) è un'API Java per la manipolazione di oggetti remoti (ad esempio un oggetto istanziato su un'altra macchina virtuale, possibilmente su un'altra macchina sulla rete) in modo trasparente, vale a dire nello stesso modo come se l'oggetto fosse situato nella macchina virtuale (JVM) della macchina locale.
Pertanto un server consente a un client di richiamare in remoto metodi su un oggetto istanziato. Sono necessarie due macchine virtuali (una per il server e l'altra per il client) e tutte le comunicazioni avvengono in Java .
RMI è una soluzione basata su Java, a differenza dello standard CORBA di OMG (Object Management Group) per la manipolazione di oggetti remoti, con qualsiasi linguaggio. Corba è molto più complicato da implementare, questo è il motivo per cui molti sviluppatori si rivolgono spesso a RMI.
La struttura del livello RMI
Le connessioni e i trasferimenti di dati vengono eseguiti da RMI in Java su TCP / IP utilizzando un protocollo proprietario (JRMP, Java Remote Method Protocol) sulla porta 1099.
A partire da Java 2 versione 1.3, la comunicazione tra client e server avviene tramite RMI-IIOP (Internet Inter-Orb Protocol), un protocollo standardizzato da OMG (Object Management Group) e utilizzato nel CORBA.
La trasmissione dei dati avviene attraverso un sistema di livelli, basato sul modello OSI per garantire l'interoperabilità tra i programmi e le versioni di Java.
- Lo stub e lo scheletro, rispettivamente situati sul client e sul server, assicurano la conversione delle comunicazioni effettuate con l'oggetto remoto.
- Il livello di riferimento ( RRL, Reference Layer remoto ) contiene il sistema di localizzazione, per fornire agli oggetti un modo per ottenere un riferimento all'oggetto remoto (utilizzando il pacchetto java.rmi.Naming ). È generalmente noto come registro RMI in quanto fa riferimento agli oggetti.
- Il livello di trasporto può ascoltare le chiamate in arrivo e stabilire connessioni e trasportare i dati sulla rete tramite TCP ( pacchetti java.net.Socket e java.net.SocketServer ).
Pertanto, un'applicazione client-server basata su RMI è implementata come tre componenti:
- L'applicazione client che implementa lo stub.
- Il server delle applicazioni che implementa lo scheletro.
- Un mediatore (registro RMI).
Documento originale pubblicato su CommentcaMarche.net.