From 20456aeaa41f3fd586652ed17133df3def792c1a Mon Sep 17 00:00:00 2001 From: Sebastian Rieger Date: Mon, 27 Nov 2017 13:25:20 +0100 Subject: [PATCH] added small HOWTO to configure Eclipse (and other IDEs) for RMI/rmiregistry --- .../verteiltesysteme/rmi/RMIEchoServer.java | 54 +++++++++++++------ 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServer.java b/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServer.java index b2c0029..4914646 100644 --- a/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServer.java +++ b/VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServer.java @@ -1,29 +1,53 @@ 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 (+ Symbol) + * + * - Im Tab "Main" --> Location z.B. für Standard Java 8 JRE unter Windows: + * C:\Program Files\Java\jre1.8.0_151\bin\rmiregistry.exe + * + * - Im Tab "Environment" --> Variable "CLASSPATH" anlegen und auf das bin + * Verzeichnis des Projects z.B. + * C:\Users\\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 RMIEchoServer implements RMIEchoInterface { - public RMIEchoServer() {} + public RMIEchoServer() { + } - public static void main(String args[]) { + public static void main(String args[]) { - try { - RMIEchoServer obj = new RMIEchoServer(); - RMIEchoInterface stub = (RMIEchoInterface) UnicastRemoteObject.exportObject(obj, 0); + try { + RMIEchoServer obj = new RMIEchoServer(); + RMIEchoInterface stub = (RMIEchoInterface) UnicastRemoteObject.exportObject(obj, 0); - // Bind the remote object's stub in the registry - Registry registry = LocateRegistry.getRegistry(); - registry.bind("RMIEchoInterface", stub); + // Bind the remote object's stub in the registry + Registry registry = LocateRegistry.getRegistry(); + registry.bind("RMIEchoInterface", stub); - System.err.println("Server ready"); - } catch (Exception e) { - System.err.println("Server exception: " + e.toString()); - e.printStackTrace(); - } - } + System.err.println("Server ready"); + } catch (Exception e) { + System.err.println("Server exception: " + e.toString()); + e.printStackTrace(); + } + } @Override public String toLowerCase(String input) throws RemoteException { @@ -33,5 +57,5 @@ public class RMIEchoServer implements RMIEchoInterface { @Override public String toUpperCase(String input) throws RemoteException { return input.toUpperCase(); - } + } } \ No newline at end of file