Aller au contenu

RMI : Remote Method Invocation

Voici un exemple simple de programme utilisant l’architecture de communication distante RMI (Remote Method Invocation) en Java :

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

// Définition de l'interface du service distant
public interface HelloService extends Remote {
  String sayHello(String name) throws RemoteException;
}


import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

// Implémentation de l'interface du service distant
public class HelloServiceImpl extends UnicastRemoteObject implements HelloService {
  public HelloServiceImpl() throws RemoteException {
    // Constructeur vide obligatoire pour implémenter UnicastRemoteObject
  }

  @Override
  public String sayHello(String name) throws RemoteException {
    return "Hello, " + name + "!";
  }
}
import java.rmi.Naming;

public class Main {
  public static void main(String[] args) {
    try {
      // Création de l'objet distant
      HelloService helloService = new HelloServiceImpl();

      // Enregistrement de l'objet distant auprès du registre RMI
      Naming.rebind("rmi://localhost/HelloService", helloService);
      System.out.println("Le service est enregistré.");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Pour utiliser le service distant, vous pouvez écrire un autre programme client qui se connecte au service et appelle ses méthodes à distance

import java.rmi.Naming;

public class Client {
  public static void main(String[] args) {
    try {
      // Recherche du service auprès du registre RMI
      HelloService helloService = (HelloService) Naming.lookup("rmi://localhost/HelloService");

      // Appel de la méthode à distance
      String message = helloService.sayHello("Alice");
      System.out.println(message);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Dans cet exemple, le client recherche le service distant auprès du registre RMI en utilisant l’URL du service. L’URL du service est définie dans le programme du serveur lors de l’enregistrement de l’objet distant auprès du registre RMI. Le client utilise l’interface du service pour appeler la méthode sayHello à distance en passant un nom en argument. Le message de retour est affiché à l’écran.

Cet exemple montre comment utiliser RMI pour créer un service distant en Java et comment appeler ses méthodes à distance à partir d’un client. Vous pouvez personnaliser l’interface du service et les méthodes de l’objet distant en fonction de vos besoins.