Ich habe ein merkwürdiges Problem mit RMI. Vor etwa zwei Monaten hatte ich die Implementierung des RMI interface bereits lauffähig. Das Server-binding hat funktioniert und ein anderes Java Programm konnte sich darauf verbinden und die Methoden des Server aufrufen. Heute wollte ich die Implementierung weiter ausarbeiten und "plötzlich" lässt sich keine Verbindung zur Registry mehr herstellen. Das "registry.rebind(url, server);" liefert jetzt ein "java.rmi.ConnectException: Connection refused".
Zum debuggen habe ich mal versucht, die Registry Einträge mit einer simplen Schleife auszugeben.
Selbst da kommt "java.rmi.ConnectException: Connection refused", also schon beim Lesen der Registry.
Irgendwie scheint die JVM auf ihre eigene Registry nicht zugreifen zu dürfen.
Das scheint keines der üblichen Probleme zu sein, die man bei Google zu RMI findet. Hat jemand eine Idee?
Zum debuggen habe ich mal versucht, die Registry Einträge mit einer simplen Schleife auszugeben.
Selbst da kommt "java.rmi.ConnectException: Connection refused", also schon beim Lesen der Registry.
Irgendwie scheint die JVM auf ihre eigene Registry nicht zugreifen zu dürfen.
Das scheint keines der üblichen Probleme zu sein, die man bei Google zu RMI findet. Hat jemand eine Idee?
Java:
public static String registerRmiServer(MyRmiServer server, int port) throws RemoteException {
String url = String.format("rmi://localhost:%s/%s", port, INTERFACENAME); // INTERFACENAME = "MeinServer", port = 4711
Registry registry;
try {
try {
registry = LocateRegistry.getRegistry(port);
} catch(RemoteException ex) {
registry = LocateRegistry.createRegistry(port);
}
// -------- zum debug zusätzlich eingefügt ---------
System.out.println("listing start");
for (String entry : registry.list()) {
System.out.println(entry);
}
System.out.println("listing end");
// ------------------------------------------------------
} catch(RemoteException ex) {
throw new RemoteException(String.format("RMI Registry creation failed for: %s", url), ex);
}
try {
registry.rebind(url, server);
} catch(RemoteException ex) {
throw new RemoteException(String.format("RMI Server binding failed for: %s", url), ex);
}
return url;
}
Zuletzt bearbeitet: