diff --git a/rmi/client.policy b/rmi/client.policy new file mode 100644 index 0000000000..5d74bde76d --- /dev/null +++ b/rmi/client.policy @@ -0,0 +1,3 @@ +grant { + permission java.security.AllPermission; +}; \ No newline at end of file diff --git a/rmi/server.policy b/rmi/server.policy new file mode 100644 index 0000000000..5d74bde76d --- /dev/null +++ b/rmi/server.policy @@ -0,0 +1,3 @@ +grant { + permission java.security.AllPermission; +}; \ No newline at end of file diff --git a/rmi/src/org/baeldung/Client.java b/rmi/src/org/baeldung/Client.java new file mode 100644 index 0000000000..0376952bab --- /dev/null +++ b/rmi/src/org/baeldung/Client.java @@ -0,0 +1,20 @@ +package org.baeldung; + +import java.rmi.NotBoundException; +import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; + +public class Client { + public static void main(String[] args) throws RemoteException, NotBoundException { + System.setProperty("java.security.policy", "file:./client.policy"); + if (System.getSecurityManager() == null) { + System.setSecurityManager(new SecurityManager()); + } + String name = "RandomNumberGenerator"; + Registry registry = LocateRegistry.getRegistry(); + RandomNumberGenerator randomNumberGenerator = (RandomNumberGenerator) registry.lookup(name); + int number = randomNumberGenerator.get(); + System.out.println("Received random number:" + number); + } +} diff --git a/rmi/src/org/baeldung/RandomNumberGenerator.java b/rmi/src/org/baeldung/RandomNumberGenerator.java new file mode 100644 index 0000000000..50e49d2652 --- /dev/null +++ b/rmi/src/org/baeldung/RandomNumberGenerator.java @@ -0,0 +1,8 @@ +package org.baeldung; + +import java.rmi.Remote; +import java.rmi.RemoteException; + +public interface RandomNumberGenerator extends Remote{ + int get() throws RemoteException; +} diff --git a/rmi/src/org/baeldung/RandomNumberGeneratorEngine.java b/rmi/src/org/baeldung/RandomNumberGeneratorEngine.java new file mode 100644 index 0000000000..04d90b2ff9 --- /dev/null +++ b/rmi/src/org/baeldung/RandomNumberGeneratorEngine.java @@ -0,0 +1,10 @@ +package org.baeldung; + +import java.rmi.RemoteException; + +public class RandomNumberGeneratorEngine implements RandomNumberGenerator { + @Override + public int get() throws RemoteException { + return (int) (100 * Math.random()); + } +} diff --git a/rmi/src/org/baeldung/Server.java b/rmi/src/org/baeldung/Server.java new file mode 100644 index 0000000000..8e613cb6bb --- /dev/null +++ b/rmi/src/org/baeldung/Server.java @@ -0,0 +1,22 @@ +package org.baeldung; + +import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; +import java.rmi.server.UnicastRemoteObject; + +public class Server { + public static void main(String[] args) throws RemoteException { + System.setProperty("java.security.policy", "file:./server.policy"); + if (System.getSecurityManager() == null) { + System.setSecurityManager(new SecurityManager()); + } + String name = "RandomNumberGenerator"; + RandomNumberGenerator randomNumberGenerator = new RandomNumberGeneratorEngine(); + RandomNumberGenerator stub = + (RandomNumberGenerator) UnicastRemoteObject.exportObject(randomNumberGenerator, 0); + Registry registry = LocateRegistry.getRegistry(); + registry.rebind(name, stub); + System.out.println("RandomNumberGenerator bound"); + } +}