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 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
- ^ Taylor, Ian J. From P2P to Web Services and Grids - Peers in a Client/Server World. Springer, 2005