From 33529d25f6e31ba6fe43d6d15e61b660625c9057 Mon Sep 17 00:00:00 2001
From: Sebastian Rieger <sebastian.rieger@informatik.hs-fulda.de>
Date: Sun, 11 Nov 2018 23:09:30 +0100
Subject: [PATCH] Changed output of RMI Echo Server from System.err to
 System.out, added RMI Echo Server that contains creation of a local registry,
 no need to start rmiregistry in this case

---
 .../verteiltesysteme/rmi/RMIEchoServer.java   |  2 +-
 .../rmi/RMIEchoServerWithRegistry.java        | 64 +++++++++++++++++++
 2 files changed, 65 insertions(+), 1 deletion(-)
 create mode 100644 VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServerWithRegistry.java

diff --git a/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServer.java b/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServer.java
index d09ec6f..b2c3b4f 100644
--- a/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServer.java
+++ b/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServer.java
@@ -42,7 +42,7 @@ public class RMIEchoServer implements RMIEchoInterface {
 			Registry registry = LocateRegistry.getRegistry();
 			registry.bind("RMIEchoInterface", stub);
 
-			System.err.println("Server ready");
+			System.out.println("Server ready");
 		} catch (Exception e) {
 			System.err.println("Server exception: " + e.toString());
 			e.printStackTrace();
diff --git a/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServerWithRegistry.java b/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServerWithRegistry.java
new file mode 100644
index 0000000..0c35c34
--- /dev/null
+++ b/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServerWithRegistry.java
@@ -0,0 +1,64 @@
+package verteiltesysteme.rmi;
+
+/* damit der Server gestartet werden kann, muss die rmiregistry (Verzeichnisdienst
+ *  f�r bereitgestellte Funktionen und deren Parameter etc., vgl. Folien, laufen. 
+ *  Hierf�r kann in Eclipse �ber "Run --> External Tools" eine neue "External Tool
+ *  Configuration" erstellt werden, die die rmiregistry aufruft:
+ *  
+ *  - New Configuration, "Progam" ausw�hlen, (+ Symbol)
+ *  
+ *  - Im Tab "Main" --> Location z.B. f�r Standard Java 8 JRE unter Windows: 
+ *  	C:\Program Files\Java\jre1.8.0_181\bin\rmiregistry.exe
+ *  
+ *  - Im Tab "Environment" --> Variable "CLASSPATH" anlegen und auf das bin
+ *    Verzeichnis des Projects z.B.
+ *      C:\Users\<username>\git\verteilte-systeme-bsc-ai-examples\
+ *      VerteilteSysteme-Examples\bin" 
+ *    zeigen lassen. Danach mittels "Run" rmiregistry starten.
+ *    
+ *  - Run Configuration f�r die in diesem File gezeigte Klasse RMIEchoServer muss
+ *    im Tab "Arguments" im Feld "VM Arguments:" folgendes eingetragen haben:
+ *      -Djava.rmi.server.codebase=file:${workspace_loc:VerteilteSysteme-Examples/bin/}
+ *    damit die f�r den RMIEchoServer erfoderlichen Klassen als codebase in RMI
+ *    verf�gbar sind    
+ */
+
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.rmi.server.UnicastRemoteObject;
+
+public class RMIEchoServerWithRegistry implements RMIEchoInterface {
+	public RMIEchoServerWithRegistry() {
+	}
+
+	public static void main(String args[]) {
+
+		try {
+			RMIEchoServerWithRegistry obj = new RMIEchoServerWithRegistry();
+			RMIEchoInterface stub = (RMIEchoInterface) UnicastRemoteObject.exportObject(obj, 0);
+
+			// Bind the remote object's stub in the registry
+
+			// create a local registry on default port 1099 (tcp) 
+			Registry registry = LocateRegistry.createRegistry(1099);
+			// Use rebind to simply replace existing binding
+			registry.rebind("RMIEchoInterface", stub);
+
+			System.out.println("Server ready");
+		} catch (Exception e) {
+			System.err.println("Server exception: " + e.toString());
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public String toLowerCase(String input) throws RemoteException {
+		return input.toLowerCase();
+	}
+
+	@Override
+	public String toUpperCase(String input) throws RemoteException {
+		return input.toUpperCase();
+	}
+}
\ No newline at end of file
-- 
GitLab