Penyeruan kaedah jauh Java (Java Remote method invocation, Java RMI) ialah sebuah API Java yang melakukan padanan berorientasi objek bagi panggilan tatacara jauh (RPC, remote procedure call).

Model pelaksanaan biasa Java-RMI menggunakan objek stub dan skeleton'. Java 2 SDK, Standard Edition, v1.2 tidak lagi memerlukan skeleton.

Versi Jini

sunting

Jini menyediakan versi yang lebih canggih bagi RMI di dalam Java. Fungsinya serupa namun ia menyediakan kemampuan dan mekanisma pencarian yang lebih canggih untuk aplikasi-aplikasi objek teragih.[1]

Contoh

sunting

Kelas-kelas berikut melaksanakan sebuah atur cara pelanggan-pelayan menggunakan RMI yang memaparkan pesanan.

Kelas RmiServer — mendengar permintaan RMI dan melaksanakan antara muka yang digunakan oleh pelanggan untuk menyeru kaedah-kaedah jauh.

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.registry.*; 

public class RmiServer extends UnicastRemoteObject 
    implements RmiServerIntf {
    public static final String MESSAGE = "Hello world";

    public RmiServer() throws RemoteException {
    }

    public String getMessage() {
        return MESSAGE;
    }

    public static void main(String args[]) {
        System.out.println("RMI server started");

        // Cipta dan pasang pengurus keselamatan
        if (System.getSecurityManager() == null) {
            System.setSecurityManager(new RMISecurityManager());
            System.out.println("Security manager installed.");
        } else {
            System.out.println("Security manager already exists.");
        }

        try { //pengendali pengecualian khusus untuk penciptaan daftar
            LocateRegistry.createRegistry(1099); 
            System.out.println("java RMI registry created.");
        } catch (RemoteException e) {
            //tidak berbuat apa-apa, ralat bermaksud daftar telah wujud
            System.out.println("java RMI registry already exists.");
        }
            
        try {
            //Tikakan RmiServer
            RmiServer obj = new RmiServer();

            //Ikat tika objek ini kepada nama "RmiServer"
            Naming.rebind("//localhost/RmiServer", obj);

            System.out.println("PeerServer bound in registry");
        } catch (Exception e) {
            System.err.println("RMI server exception:" + e);
            e.printStackTrace();
        }
    }
}

Rujukan

sunting
  1. ^ Taylor, Ian J. From P2P to Web Services and Grids - Peers in a Client/Server World. Springer, 2005