Aplikacja Java RMI

Aby napisać aplikację RMI Java, musisz wykonać kroki podane poniżej -

  • Zdefiniuj interfejs zdalny
  • Opracuj klasę implementacji (obiekt zdalny)
  • Opracuj program serwera
  • Opracuj program klienta
  • Skompiluj aplikację
  • Uruchom aplikację

Definiowanie interfejsu zdalnego

Zdalny interfejs zawiera opis wszystkich metod określonego zdalnego obiektu. Klient komunikuje się z tym zdalnym interfejsem.

Aby utworzyć zdalny interfejs -

  • Utwórz interfejs, który rozszerza wstępnie zdefiniowany interfejs Remote który należy do pakietu.

  • Zadeklaruj wszystkie metody biznesowe, które mogą być wywoływane przez klienta w tym interfejsie.

  • Ponieważ istnieje możliwość wystąpienia problemów z siecią podczas połączeń zdalnych, nazwano wyjątek RemoteExceptionmoże wystąpić; wyrzuć to.

Poniżej znajduje się przykład zdalnego interfejsu. Tutaj zdefiniowaliśmy interfejs o nazwieHello i ma metodę o nazwie printMsg().

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

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

Opracowanie klasy implementacji (obiekt zdalny)

Musimy zaimplementować zdalny interfejs utworzony we wcześniejszym kroku. (Możemy osobno napisać klasę implementacji lub bezpośrednio sprawić, by program serwera implementował ten interfejs.)

Aby opracować klasę implementacji -

  • Zaimplementuj interfejs utworzony w poprzednim kroku.
  • Zapewnij implementację wszystkich abstrakcyjnych metod interfejsu zdalnego.

Poniżej znajduje się klasa implementacji. Tutaj stworzyliśmy klasę o nazwieImplExample i zaimplementował interfejs Hello utworzone w poprzednim kroku i dostarczone body dla tej metody, która drukuje wiadomość.

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

Opracowywanie programu serwera

Program serwera RMI powinien implementować zdalny interfejs lub rozszerzać klasę implementacji. Tutaj powinniśmy utworzyć zdalny obiekt i powiązać go z plikiemRMIregistry.

Aby opracować program serwera -

  • Utwórz klasę klienta, z której chcesz wywołać obiekt zdalny.

  • Create a remote object tworząc instancję klasy implementacji, jak pokazano poniżej.

  • Wyeksportuj zdalny obiekt przy użyciu metody exportObject() klasy o nazwie UnicastRemoteObject który należy do pakietu java.rmi.server.

  • Pobierz rejestr RMI przy użyciu rozszerzenia getRegistry() metoda LocateRegistry klasa należąca do pakietu java.rmi.registry.

  • Powiąż zdalny obiekt utworzony w rejestrze przy użyciu rozszerzenia bind() metoda klasy o nazwie Registry. Do tej metody jako parametry przekaż łańcuch reprezentujący nazwę powiązania i wyeksportowany obiekt.

Poniżej znajduje się przykład programu serwera 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(); 
      } 
   } 
}

Opracowanie programu klienckiego

Napisz w nim program kliencki, pobierz zdalny obiekt i wywołaj wymaganą metodę przy użyciu tego obiektu.

Aby opracować program klienta -

  • Utwórz klasę klienta, z której zamierzasz wywołać obiekt zdalny.

  • Pobierz rejestr RMI przy użyciu rozszerzenia getRegistry() metoda LocateRegistry klasa należąca do pakietu java.rmi.registry.

  • Pobierz obiekt z rejestru przy użyciu metody lookup() klasy Registry który należy do pakietu java.rmi.registry.

    Do tej metody należy przekazać wartość ciągu reprezentującą nazwę powiązania jako parametr. To zwróci ci zdalny obiekt.

  • Funkcja lookup () zwraca obiekt typu remote i rzutuje go na typ Hello.

  • Na koniec wywołaj wymaganą metodę przy użyciu uzyskanego zdalnego obiektu.

Poniżej znajduje się przykład programu klienckiego 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(); 
      } 
   } 
}

Kompilowanie aplikacji

Aby skompilować aplikację -

  • Skompiluj zdalny interfejs.
  • Skompiluj klasę implementacji.
  • Skompiluj program serwera.
  • Skompiluj program klienta.

Lub,

Otwórz folder, w którym zapisałeś wszystkie programy i skompiluj wszystkie pliki Java, jak pokazano poniżej.

Javac *.java

Wykonywanie aplikacji

Step 1 - Uruchom rmi rejestru za pomocą następującego polecenia.

start rmiregistry

To rozpocznie rmi rejestru w osobnym oknie, jak pokazano poniżej.

Step 2 - Uruchom plik klasy serwera, jak pokazano poniżej.

Java Server

Step 3 - Uruchom plik klasy klienta, jak pokazano poniżej.

java Client

Verification - Zaraz po uruchomieniu klienta na serwerze pojawią się następujące dane wyjściowe.