Pergi ke kandungan

Java RMI

Daripada Wikipedia, ensiklopedia bebas.
Semakan 2504164 pada 19:37, 10 Disember 2012 oleh Kilom691 (bincang | sumb.) (image svg)
Model pelaksanaan biasa Java-RMI menggunakan objek stub dan skeleton'. Java 2 SDK, Standard Edition, v1.2 tidak lagi memerlukan skeleton.

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).

Versi Jini

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

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 pengguna 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");

        // Create and install a security manager
        if (System.getSecurityManager() == null) {
            System.setSecurityManager(new RMISecurityManager());
            System.out.println("Security manager installed.");
        } else {
            System.out.println("Security manager already exists.");
        }

        try { //special exception handler for registry creation
            LocateRegistry.createRegistry(1099); 
            System.out.println("java RMI registry created.");
        } catch (RemoteException e) {
            //do nothing, error means registry already exists
            System.out.println("java RMI registry already exists.");
        }
            
        try {
            //Instantiate RmiServer
            RmiServer obj = new RmiServer();

            // Bind this object instance to the name "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

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