Java RMI Uygulaması

Bir RMI Java uygulaması yazmak için aşağıda verilen adımları izlemeniz gerekir -

  • Uzak arabirimi tanımlayın
  • Uygulama sınıfını (uzak nesne) geliştirin
  • Sunucu programını geliştirin
  • Müşteri programını geliştirin
  • Uygulamayı derleyin
  • Uygulamayı yürütün

Uzak Arayüzü Tanımlama

Uzak arabirim, belirli bir uzak nesnenin tüm yöntemlerinin açıklamasını sağlar. İstemci, bu uzak arabirimle iletişim kurar.

Uzak arabirim oluşturmak için -

  • Önceden tanımlanmış arayüzü genişleten bir arayüz oluşturun Remote hangi pakete aittir.

  • Bu arayüzde müşteri tarafından çağrılabilecek tüm iş yöntemlerini bildirin.

  • Uzaktan aramalar sırasında ağ sorunları yaşanma ihtimali olduğundan, RemoteExceptionoluşabilir; at onu.

Aşağıda bir uzak arayüz örneği verilmiştir. Burada adıyla bir arayüz tanımladıkHello ve adı verilen bir yöntemi vardır printMsg().

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

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

Uygulama Sınıfını Geliştirme (Uzak Nesne)

Önceki adımda oluşturulan uzak arabirimi uygulamamız gerekiyor. (Bir uygulama sınıfını ayrı ayrı yazabiliriz veya sunucu programının bu arayüzü doğrudan uygulamasını sağlayabiliriz.)

Bir uygulama sınıfı geliştirmek için -

  • Önceki adımda oluşturulan arayüzü uygulayın.
  • Uzak arabirimin tüm soyut yöntemlerine uygulama sağlayın.

Aşağıda bir uygulama sınıfı verilmiştir. Burada adında bir sınıf oluşturdukImplExample ve arayüzü uyguladı Hello önceki adımda oluşturulmuş ve sağlanan body bir mesaj yazdıran bu yöntem için.

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

Sunucu Programının Geliştirilmesi

Bir RMI sunucu programı uzak arabirimi uygulamalı veya uygulama sınıfını genişletmelidir. Burada, uzak bir nesne oluşturmalı ve onuRMIregistry.

Bir sunucu programı geliştirmek için -

  • Uzak nesneyi çağırmak istediğiniz yerden bir istemci sınıfı oluşturun.

  • Create a remote object aşağıda gösterildiği gibi uygulama sınıfını örnekleyerek.

  • Yöntemi kullanarak uzak nesneyi dışa aktarın exportObject() sınıfın adı UnicastRemoteObject hangisi pakete ait java.rmi.server.

  • Kullanarak RMI kaydını edinin getRegistry() yöntemi LocateRegistry pakete ait sınıf java.rmi.registry.

  • Oluşturulan uzak nesneyi kayıt defterine bağlayın. bind() adlı sınıfın yöntemi Registry. Bu yönteme, bağlama adını ve dışa aktarılan nesneyi parametreler olarak temsil eden bir dize geçirin.

Aşağıda bir RMI sunucu programı örneği verilmiştir.

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(); 
      } 
   } 
}

Müşteri Programının Geliştirilmesi

İçine bir istemci programı yazın, uzak nesneyi getirin ve bu nesneyi kullanarak gerekli yöntemi çağırın.

Bir müşteri programı geliştirmek için -

  • Uzak nesneyi çağırmayı amaçladığınız yerden bir istemci sınıfı oluşturun.

  • Kullanarak RMI kaydını edinin getRegistry() yöntemi LocateRegistry pakete ait sınıf java.rmi.registry.

  • Yöntemi kullanarak nesneyi kayıt defterinden alın lookup() sınıfın Registry hangisi pakete ait java.rmi.registry.

    Bu yönteme, bağlama adını bir parametre olarak temsil eden bir dize değeri iletmeniz gerekir. Bu size uzak nesneyi döndürür.

  • Lookup (), remote türünde bir nesne döndürür ve onu Hello türüne çevirir.

  • Son olarak, elde edilen uzak nesneyi kullanarak gerekli yöntemi çağırın.

Aşağıda bir RMI istemci programı örneği verilmiştir.

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(); 
      } 
   } 
}

Uygulamayı Derlemek

Uygulamayı derlemek için -

  • Uzak arabirimi derleyin.
  • Uygulama sınıfını derleyin.
  • Sunucu programını derleyin.
  • İstemci programını derleyin.

Veya,

Tüm programları kaydettiğiniz klasörü açın ve tüm Java dosyalarını aşağıda gösterildiği gibi derleyin.

Javac *.java

Başvurunun Yürütülmesi

Step 1 - Başlat rmi aşağıdaki komutu kullanarak kayıt defteri.

start rmiregistry

Bu bir başlayacak rmi aşağıda gösterildiği gibi ayrı bir pencerede kayıt.

Step 2 - Sunucu sınıfı dosyasını aşağıda gösterildiği gibi çalıştırın.

Java Server

Step 3 - İstemci sınıfı dosyasını aşağıda gösterildiği gibi çalıştırın.

java Client

Verification - İstemciyi başlatır başlatmaz, sunucuda aşağıdaki çıktıyı görürsünüz.