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