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.