1. Interface
- interface extends Remote class
- every method throws RemoteException
package com.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Date;
public interface RmiInterface extends Remote {
Date getDate() throws RemoteException;
}2. RMI server implementation - class extends UnicastRemoteObject
- class implements custom RmiInterface
- class creates RMI registry and binds it to localhost and specified port
package com.rmi.server;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.Date;
import com.rmi.RmiInterface;
public class RMIServer extends UnicastRemoteObject implements RmiInterface {
protected RMIServer() throws RemoteException, AlreadyBoundException,
UnknownHostException {
String registryHost = InetAddress.getLocalHost().toString();
String registryName = "serverRMI";
int registryPort = 1234;
System.out.println("Starting RMI server on host: " + registryHost
+ ", port: " + registryPort + " with name: " + registryName);
Registry registry = LocateRegistry.createRegistry(registryPort);
registry.bind(registryName, this);
}
@Override
public Date getDate() {
return new Date();
}
public static void main(String[] args) throws RemoteException,
UnknownHostException, AlreadyBoundException {
RMIServer server = new RMIServer();
}
}3. RMI client implementation- class gets RMI registry
- class invokes RMI server method
package com.rmi.client;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.Date;
import com.rmi.RmiInterface;
public class RMIClient {
public static void main(String[] args) throws RemoteException,
NotBoundException {
String registryHost = "127.0.0.1";
String registryName = "serverRMI";
int registryPort = 1234;
Registry registry = LocateRegistry.getRegistry(registryHost,
registryPort);
RmiInterface rmiServer = (RmiInterface) registry.lookup(registryName);
Date date = rmiServer.getDate();
System.out.println("Date from RMI server: " + date);
}
}
Comments
Post a Comment