Application Java RMI

Pour écrire une application Java RMI, vous devez suivre les étapes ci-dessous -

  • Définir l'interface distante
  • Développer la classe d'implémentation (objet distant)
  • Développer le programme serveur
  • Développer le programme client
  • Compilez l'application
  • Exécutez l'application

Définition de l'interface distante

Une interface distante fournit la description de toutes les méthodes d'un objet distant particulier. Le client communique avec cette interface distante.

Pour créer une interface distante -

  • Créer une interface qui étend l'interface prédéfinie Remote qui appartient au package.

  • Déclarez toutes les méthodes métier pouvant être appelées par le client dans cette interface.

  • Puisqu'il y a un risque de problèmes de réseau pendant les appels à distance, une exception nommée RemoteExceptionpeut se produire; lancez-le.

Voici un exemple d'interface distante. Ici, nous avons défini une interface avec le nomHello et il a une méthode appelée printMsg().

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

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

Développement de la classe d'implémentation (objet distant)

Nous devons implémenter l'interface distante créée à l'étape précédente. (Nous pouvons écrire une classe d'implémentation séparément ou nous pouvons directement faire en sorte que le programme serveur implémente cette interface.)

Pour développer une classe d'implémentation -

  • Implémentez l'interface créée à l'étape précédente.
  • Fournit une implémentation à toutes les méthodes abstraites de l'interface distante.

Voici une classe d'implémentation. Ici, nous avons créé une classe nomméeImplExample et implémenté l'interface Hello créé à l'étape précédente et fourni body pour cette méthode qui imprime un message.

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

Développement du programme serveur

Un programme serveur RMI doit implémenter l'interface distante ou étendre la classe d'implémentation. Ici, nous devons créer un objet distant et le lier auRMIregistry.

Pour développer un programme serveur -

  • Créez une classe client à partir de laquelle vous souhaitez appeler l'objet distant.

  • Create a remote object en instanciant la classe d'implémentation comme indiqué ci-dessous.

  • Exportez l'objet distant à l'aide de la méthode exportObject() de la classe nommée UnicastRemoteObject qui appartient au package java.rmi.server.

  • Obtenez le registre RMI en utilisant le getRegistry() méthode de la LocateRegistry classe qui appartient au package java.rmi.registry.

  • Liez l'objet distant créé au registre à l'aide du bind() méthode de la classe nommée Registry. À cette méthode, passez une chaîne représentant le nom de la liaison et l'objet exporté, en tant que paramètres.

Voici un exemple de programme serveur 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(); 
      } 
   } 
}

Développement du programme client

Écrivez un programme client dedans, récupérez l'objet distant et invoquez la méthode requise en utilisant cet objet.

Pour développer un programme client -

  • Créez une classe client à partir de laquelle vous souhaitez invoquer l'objet distant.

  • Obtenez le registre RMI en utilisant le getRegistry() méthode de la LocateRegistry classe qui appartient au package java.rmi.registry.

  • Récupérez l'objet du registre à l'aide de la méthode lookup() de la classe Registry qui appartient au package java.rmi.registry.

    Pour cette méthode, vous devez transmettre une valeur de chaîne représentant le nom de la liaison en tant que paramètre. Cela vous renverra l'objet distant.

  • La recherche () renvoie un objet de type remote, en le convertissant en type Hello.

  • Enfin, appelez la méthode requise à l'aide de l'objet distant obtenu.

Voici un exemple de programme 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(); 
      } 
   } 
}

Compilation de l'application

Pour compiler l'application -

  • Compilez l'interface distante.
  • Compilez la classe d'implémentation.
  • Compilez le programme serveur.
  • Compilez le programme client.

Ou,

Ouvrez le dossier dans lequel vous avez stocké tous les programmes et compilez tous les fichiers Java comme indiqué ci-dessous.

Javac *.java

Exécution de l'application

Step 1 - Démarrez le rmi registre à l'aide de la commande suivante.

start rmiregistry

Cela va démarrer un rmi Registre sur une fenêtre distincte comme indiqué ci-dessous.

Step 2 - Exécutez le fichier de classe du serveur comme indiqué ci-dessous.

Java Server

Step 3 - Exécutez le fichier de classe client comme indiqué ci-dessous.

java Client

Verification - Dès que vous démarrez le client, vous verrez la sortie suivante sur le serveur.