Step1 : Define the remote interface
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ArithmeticService extends Remote {
int add(int a, int b) throws RemoteException;
int subtract(int a, int b) throws RemoteException;
int multiply(int a, int b) throws RemoteException;
double divide(int a, int b) throws RemoteException;
}
Step 2: Implement the Remote Interface
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class ArithmeticServiceImpl extends UnicastRemoteObject implements
ArithmeticService {
protected ArithmeticServiceImpl() throws RemoteException {
super();
}
public int add(int a, int b) throws RemoteException {
return a + b;
}
public int subtract(int a, int b) throws RemoteException {
return a - b;
}
public int multiply(int a, int b) throws RemoteException {
return a * b;
}
public double divide(int a, int b) throws RemoteException {
if (b == 0) {
throw new RemoteException("Cannot divide by zero");
}
return (double) a / b;
}
}
Step 3: Create the Server
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class ArithmeticServer {
public static void main(String[] args) {
try {
ArithmeticService service = new ArithmeticServiceImpl();
Registry registry = LocateRegistry.createRegistry(1099); // Default RMI registry
port
registry.rebind("ArithmeticService", service);
System.out.println("ArithmeticService is running...");
} catch (Exception e) {
System.err.println("ArithmeticService exception:");
e.printStackTrace();
}
}
}
Step 4: Create the Client
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class ArithmeticClient {
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.getRegistry("localhost");
ArithmeticService service = (ArithmeticService)
registry.lookup("ArithmeticService");
// Perform operations
int resultAdd = service.add(10, 5);
int resultSubtract = service.subtract(10, 5);
int resultMultiply = service.multiply(10, 5);
double resultDivide = service.divide(10, 5);
System.out.println("Addition result: " + resultAdd);
System.out.println("Subtraction result: " + resultSubtract);
System.out.println("Multiplication result: " + resultMultiply);
System.out.println("Division result: " + resultDivide);
} catch (Exception e) {
System.err.println("ArithmeticClient exception:");
e.printStackTrace();
}
}
}