summaryrefslogtreecommitdiff
path: root/Java-Kompendium/kap20/2/src
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2025-12-04 12:14:38 +0100
committerEugen Wissner <belka@caraus.de>2025-12-04 13:57:53 +0100
commit5eded28b16a67fb3ef6bd1cce5526d4dc2de39ab (patch)
tree3019d5be499c466b952b2f04a523d09613521cae /Java-Kompendium/kap20/2/src
parent2da137aea85e4aab48d5df5389da609720f2acb9 (diff)
downloadbook-exercises-5eded28b16a67fb3ef6bd1cce5526d4dc2de39ab.tar.gz
Add chapters 18-20 for the java book
Diffstat (limited to 'Java-Kompendium/kap20/2/src')
-rw-r--r--Java-Kompendium/kap20/2/src/main/java/App.java12
-rw-r--r--Java-Kompendium/kap20/2/src/main/java/Client.java29
-rw-r--r--Java-Kompendium/kap20/2/src/main/java/RMIInterface.java6
-rw-r--r--Java-Kompendium/kap20/2/src/main/java/RMIKlasse.java5
-rw-r--r--Java-Kompendium/kap20/2/src/main/java/Server.java31
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();
+ }
+ }
+}