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.