Applicazione Java RMI

Per scrivere un'applicazione Java RMI, è necessario seguire i passaggi indicati di seguito:

  • Definisci l'interfaccia remota
  • Sviluppa la classe di implementazione (oggetto remoto)
  • Sviluppa il programma server
  • Sviluppa il programma client
  • Compilare l'applicazione
  • Esegui l'applicazione

Definizione dell'interfaccia remota

Un'interfaccia remota fornisce la descrizione di tutti i metodi di un particolare oggetto remoto. Il client comunica con questa interfaccia remota.

Per creare un'interfaccia remota:

  • Crea un'interfaccia che estenda l'interfaccia predefinita Remote che appartiene al pacchetto.

  • Dichiarare tutti i metodi di business che possono essere richiamati dal client in questa interfaccia.

  • Poiché esiste la possibilità di problemi di rete durante le chiamate remote, un'eccezione denominata RemoteExceptionpotrebbe capitare; gettarlo.

Di seguito è riportato un esempio di un'interfaccia remota. Qui abbiamo definito un'interfaccia con il nomeHello e ha un metodo chiamato printMsg().

import java.rmi.Remote; 
import java.rmi.RemoteException;  

// Creating Remote interface for our application 
public interface Hello extends Remote {  
   void printMsg() throws RemoteException;  
}

Sviluppo della classe di implementazione (oggetto remoto)

Dobbiamo implementare l'interfaccia remota creata nel passaggio precedente. (Possiamo scrivere una classe di implementazione separatamente o possiamo fare in modo che direttamente il programma server implementi questa interfaccia.)

Per sviluppare una classe di implementazione -

  • Implementa l'interfaccia creata nel passaggio precedente.
  • Fornire implementazione a tutti i metodi astratti dell'interfaccia remota.

Di seguito è una classe di implementazione. Qui abbiamo creato una classe denominataImplExample e implementato l'interfaccia Hello creato nel passaggio precedente e fornito body per questo metodo che stampa un messaggio.

// Implementing the remote interface 
public class ImplExample implements Hello {  
   
   // Implementing the interface method 
   public void printMsg() {  
      System.out.println("This is an example RMI program");  
   }  
}

Sviluppo del programma server

Un programma server RMI dovrebbe implementare l'interfaccia remota o estendere la classe di implementazione. Qui, dovremmo creare un oggetto remoto e associarlo al fileRMIregistry.

Per sviluppare un programma server:

  • Crea una classe client da cui desideri richiamare l'oggetto remoto.

  • Create a remote object istanziando la classe di implementazione come mostrato di seguito.

  • Esporta l'oggetto remoto utilizzando il metodo exportObject() della classe denominata UnicastRemoteObject che appartiene al pacchetto java.rmi.server.

  • Ottieni il registro RMI utilizzando il getRegistry() metodo del LocateRegistry classe che appartiene al pacchetto java.rmi.registry.

  • Associare l'oggetto remoto creato al registro utilizzando l'estensione bind() metodo della classe denominata Registry. A questo metodo, passare una stringa che rappresenta il nome del bind e l'oggetto esportato, come parametri.

Di seguito è riportato un esempio di un programma server RMI.

import java.rmi.registry.Registry; 
import java.rmi.registry.LocateRegistry; 
import java.rmi.RemoteException; 
import java.rmi.server.UnicastRemoteObject; 

public class Server extends ImplExample { 
   public Server() {} 
   public static void main(String args[]) { 
      try { 
         // Instantiating the implementation class 
         ImplExample obj = new ImplExample(); 
    
         // Exporting the object of implementation class  
         // (here we are exporting the remote object to the stub) 
         Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);  
         
         // Binding the remote object (stub) in the registry 
         Registry registry = LocateRegistry.getRegistry(); 
         
         registry.bind("Hello", stub);  
         System.err.println("Server ready"); 
      } catch (Exception e) { 
         System.err.println("Server exception: " + e.toString()); 
         e.printStackTrace(); 
      } 
   } 
}

Sviluppo del programma client

Scrivici un programma client, prendi l'oggetto remoto e invoca il metodo richiesto usando questo oggetto.

Per sviluppare un programma client -

  • Crea una classe client da cui intendi richiamare l'oggetto remoto.

  • Ottieni il registro RMI utilizzando il getRegistry() metodo del LocateRegistry classe che appartiene al pacchetto java.rmi.registry.

  • Recupera l'oggetto dal registro utilizzando il metodo lookup() della classe Registry che appartiene al pacchetto java.rmi.registry.

    A questo metodo, è necessario passare un valore stringa che rappresenti il ​​nome del bind come parametro. Questo ti restituirà l'oggetto remoto.

  • Lookup () restituisce un oggetto di tipo remote, eseguendo il down cast al tipo Hello.

  • Infine invoca il metodo richiesto utilizzando l'oggetto remoto ottenuto.

Di seguito è riportato un esempio di un programma client RMI.

import java.rmi.registry.LocateRegistry; 
import java.rmi.registry.Registry;  

public class Client {  
   private Client() {}  
   public static void main(String[] args) {  
      try {  
         // Getting the registry 
         Registry registry = LocateRegistry.getRegistry(null); 
    
         // Looking up the registry for the remote object 
         Hello stub = (Hello) registry.lookup("Hello"); 
    
         // Calling the remote method using the obtained object 
         stub.printMsg(); 
         
         // System.out.println("Remote method invoked"); 
      } catch (Exception e) {
         System.err.println("Client exception: " + e.toString()); 
         e.printStackTrace(); 
      } 
   } 
}

Compilazione dell'applicazione

Per compilare l'applicazione:

  • Compila l'interfaccia remota.
  • Compila la classe di implementazione.
  • Compila il programma del server.
  • Compila il programma client.

O,

Apri la cartella in cui hai archiviato tutti i programmi e compila tutti i file Java come mostrato di seguito.

Javac *.java

Esecuzione dell'applicazione

Step 1 - Avvia il file rmi registro utilizzando il seguente comando.

start rmiregistry

Questo avvierà un file rmi registro su una finestra separata come mostrato di seguito.

Step 2 - Eseguire il file di classe del server come mostrato di seguito.

Java Server

Step 3 - Esegui il file della classe client come mostrato di seguito.

java Client

Verification - Non appena avvii il client, vedrai il seguente output nel server.