diff options
Diffstat (limited to 'Java-Kompendium/kap20/2/src/main')
5 files changed, 83 insertions, 0 deletions
diff --git a/Java-Kompendium/kap20/2/src/main/java/App.java b/Java-Kompendium/kap20/2/src/main/java/App.java new file mode 100644 index 0000000..417e73a --- /dev/null +++ b/Java-Kompendium/kap20/2/src/main/java/App.java @@ -0,0 +1,12 @@ +public class App { + public static void main(String[] args) throws InterruptedException { + var server = new Server(); + server.start(); + + server.lock.acquire(); + Client.client(); + server.lock.release(); + + Runtime.getRuntime().exit(0); + } +} diff --git a/Java-Kompendium/kap20/2/src/main/java/Client.java b/Java-Kompendium/kap20/2/src/main/java/Client.java new file mode 100644 index 0000000..a59613d --- /dev/null +++ b/Java-Kompendium/kap20/2/src/main/java/Client.java @@ -0,0 +1,29 @@ +import java.io.*; +import java.rmi.NotBoundException; +import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; + +public class Client { + public static void client() { + try { + Registry registrierung = LocateRegistry.getRegistry(); + RMIInterface server = (RMIInterface) registrierung.lookup("RMIAufgabe"); + + InputStreamReader isr = new InputStreamReader(System.in); + BufferedReader br = new BufferedReader(isr); + + System.out.print("Geben Sie den ersten Wert ein: "); + int wert1 = Integer.parseInt(br.readLine()); + + System.out.print("Geben Sie den zweiten Wert ein: "); + int wert2 = Integer.parseInt(br.readLine()); + + int ergebnis = server.wertBerechnen(wert1, wert2); + System.out.println("Ergebnis: " + ergebnis); + } catch (IOException | NotBoundException e) { + System.out.println("Client: "); + System.out.println(e); + } + } +} diff --git a/Java-Kompendium/kap20/2/src/main/java/RMIInterface.java b/Java-Kompendium/kap20/2/src/main/java/RMIInterface.java new file mode 100644 index 0000000..8e5e165 --- /dev/null +++ b/Java-Kompendium/kap20/2/src/main/java/RMIInterface.java @@ -0,0 +1,6 @@ +import java.rmi.Remote; +import java.rmi.RemoteException; + +public interface RMIInterface extends Remote { + int wertBerechnen(int wert1, int wert2) throws RemoteException; +} diff --git a/Java-Kompendium/kap20/2/src/main/java/RMIKlasse.java b/Java-Kompendium/kap20/2/src/main/java/RMIKlasse.java new file mode 100644 index 0000000..28fe832 --- /dev/null +++ b/Java-Kompendium/kap20/2/src/main/java/RMIKlasse.java @@ -0,0 +1,5 @@ +public class RMIKlasse implements RMIInterface { + public int wertBerechnen(int wert1, int wert2) { + return wert1 * wert2; + } +} diff --git a/Java-Kompendium/kap20/2/src/main/java/Server.java b/Java-Kompendium/kap20/2/src/main/java/Server.java new file mode 100644 index 0000000..14c013a --- /dev/null +++ b/Java-Kompendium/kap20/2/src/main/java/Server.java @@ -0,0 +1,31 @@ +import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; +import java.rmi.server.UnicastRemoteObject; + +import java.util.concurrent.Semaphore; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.ReentrantLock; + +public class Server extends Thread { + public final Semaphore lock = new Semaphore(1); + + public Server() throws InterruptedException { + this.lock.acquire(); + } + + @Override + public void run() { + try { + RMIInterface server = new RMIKlasse(); + RMIInterface stub = (RMIInterface) UnicastRemoteObject.exportObject((RMIInterface) server, 0); + Registry registrierung = LocateRegistry.createRegistry(1099); + registrierung.rebind("RMIAufgabe", stub); + } catch (RemoteException e) { + System.out.println("Server: "); + System.out.println(e); + } finally { + this.lock.release(); + } + } +} |
