Java RMI-Anwendung

Um eine RMI-Java-Anwendung zu schreiben, müssen Sie die folgenden Schritte ausführen:

  • Definieren Sie die Remote-Schnittstelle
  • Entwickeln Sie die Implementierungsklasse (Remote-Objekt).
  • Entwickeln Sie das Serverprogramm
  • Entwickeln Sie das Client-Programm
  • Kompilieren Sie die Anwendung
  • Führen Sie die Anwendung aus

Remote-Schnittstelle definieren

Eine Remote-Schnittstelle enthält die Beschreibung aller Methoden eines bestimmten Remote-Objekts. Der Client kommuniziert mit dieser Remote-Schnittstelle.

So erstellen Sie eine Remote-Schnittstelle:

  • Erstellen Sie eine Schnittstelle, die die vordefinierte Schnittstelle erweitert Remote welches zum Paket gehört.

  • Deklarieren Sie alle Geschäftsmethoden, die vom Client in dieser Schnittstelle aufgerufen werden können.

  • Da bei Remote-Anrufen möglicherweise Netzwerkprobleme auftreten, wird eine Ausnahme genannt RemoteExceptionkann auftreten; werfen Sie es.

Es folgt ein Beispiel für eine Remote-Schnittstelle. Hier haben wir eine Schnittstelle mit dem Namen definiertHello und es hat eine Methode namens printMsg().

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

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

Entwicklung der Implementierungsklasse (Remote Object)

Wir müssen die im vorherigen Schritt erstellte Remote-Schnittstelle implementieren. (Wir können eine Implementierungsklasse separat schreiben oder das Serverprogramm diese Schnittstelle direkt implementieren lassen.)

Eine Implementierungsklasse entwickeln -

  • Implementieren Sie die im vorherigen Schritt erstellte Schnittstelle.
  • Stellen Sie die Implementierung aller abstrakten Methoden der Remote-Schnittstelle bereit.

Es folgt eine Implementierungsklasse. Hier haben wir eine Klasse mit dem Namen erstelltImplExample und implementierte die Schnittstelle Hello im vorherigen Schritt erstellt und bereitgestellt body für diese Methode, die eine Nachricht druckt.

// 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");  
   }  
}

Entwickeln des Serverprogramms

Ein RMI-Serverprogramm sollte die Remote-Schnittstelle implementieren oder die Implementierungsklasse erweitern. Hier sollten wir ein entferntes Objekt erstellen und es an das bindenRMIregistry.

So entwickeln Sie ein Serverprogramm -

  • Erstellen Sie eine Clientklasse, von der aus Sie das Remote-Objekt aufrufen möchten.

  • Create a remote object durch Instanziieren der Implementierungsklasse wie unten gezeigt.

  • Exportieren Sie das Remote-Objekt mit der Methode exportObject() der genannten Klasse UnicastRemoteObject welches zum Paket gehört java.rmi.server.

  • Holen Sie sich die RMI-Registrierung mit dem getRegistry() Methode der LocateRegistry Klasse, die zum Paket gehört java.rmi.registry.

  • Binden Sie das erstellte Remote-Objekt mit der an die Registrierung bind() Methode der genannten Klasse Registry. Übergeben Sie dieser Methode eine Zeichenfolge, die den Bindungsnamen und das exportierte Objekt als Parameter darstellt.

Es folgt ein Beispiel für ein RMI-Serverprogramm.

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(); 
      } 
   } 
}

Entwicklung des Client-Programms

Schreiben Sie ein Client-Programm hinein, rufen Sie das Remote-Objekt ab und rufen Sie mit diesem Objekt die erforderliche Methode auf.

Ein Kundenprogramm entwickeln -

  • Erstellen Sie eine Clientklasse, von der aus Sie das Remote-Objekt aufrufen möchten.

  • Holen Sie sich die RMI-Registrierung mit dem getRegistry() Methode der LocateRegistry Klasse, die zum Paket gehört java.rmi.registry.

  • Rufen Sie das Objekt mit der Methode aus der Registrierung ab lookup() der Klasse Registry welches zum Paket gehört java.rmi.registry.

    An diese Methode müssen Sie einen Zeichenfolgenwert übergeben, der den Bindungsnamen als Parameter darstellt. Dadurch erhalten Sie das entfernte Objekt zurück.

  • Lookup () gibt ein Objekt vom Typ remote zurück und wandelt es in den Typ Hello um.

  • Rufen Sie abschließend die erforderliche Methode mit dem erhaltenen Remote-Objekt auf.

Es folgt ein Beispiel für ein RMI-Client-Programm.

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(); 
      } 
   } 
}

Kompilieren der Anwendung

So kompilieren Sie die Anwendung:

  • Kompilieren Sie die Remote-Schnittstelle.
  • Kompilieren Sie die Implementierungsklasse.
  • Kompilieren Sie das Serverprogramm.
  • Kompilieren Sie das Client-Programm.

Oder,

Öffnen Sie den Ordner, in dem Sie alle Programme gespeichert haben, und kompilieren Sie alle Java-Dateien wie unten gezeigt.

Javac *.java

Ausführen der Anwendung

Step 1 - Starten Sie die rmi Registrierung mit dem folgenden Befehl.

start rmiregistry

Dies startet eine rmi Registrierung in einem separaten Fenster wie unten gezeigt.

Step 2 - Führen Sie die Serverklassendatei wie unten gezeigt aus.

Java Server

Step 3 - Führen Sie die Clientklassendatei wie unten gezeigt aus.

java Client

Verification - Sobald Sie den Client starten, wird die folgende Ausgabe auf dem Server angezeigt.