Browse Source

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
master
Sebastian Rieger 6 years ago
parent
commit
33529d25f6
  1. 2
      VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServer.java
  2. 64
      VerteilteSysteme-Examples/src/verteiltesysteme/rmi/RMIEchoServerWithRegistry.java

2
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();

64
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();
}
}
Loading…
Cancel
Save