RMI Connection refused bei RMI-Registry

Hatschi

Aktives Mitglied
ich hab mal ne Abschrift von Java-Ist-Auch-Eine-Insel:

Java:
import java.rmi.Remote;
import java.rmi.RemoteException;


public interface Adder extends Remote {
	public int add(int x, int y) throws RemoteException;
}
Java:
public class AdderImpl implements Adder {
	public int add(int x, int y) {
		return x+y;
	}
}
Java:
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

public class Server {
	public static void main(String[] args) throws RemoteException {
		final int PORT = Registry.REGISTRY_PORT;
		
		LocateRegistry.createRegistry(PORT);
				
		AdderImpl adder = new AdderImpl();
		Adder stub = (Adder)UnicastRemoteObject.exportObject(adder, 0);
		
		Registry registry = LocateRegistry.getRegistry();
		registry.rebind("Adder", stub);
		//UnicastRemoteObject.unexportObject(adder, true);
	}
}
Java:
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Client {
	public static void main(String[] args) throws RemoteException, NotBoundException {
		final int PORT = Registry.REGISTRY_PORT;
		
		Registry registry = LocateRegistry.getRegistry();
		Adder adder = (Adder)registry.lookup("192.168.178.13:" + PORT + "/Adder");
		System.out.println(adder.add(47, 11));
	}
}

es geht um diese Stelle:
Java:
Adder adder = (Adder)registry.lookup("192.168.178.13:" + PORT + "/Adder");

wenn ich das jetzt auf nem zweiten Rechner laufen lasse dann bekomm ich da (also beim Client)
Code:
Exception in thread "main" java.rmi.ConnectException: Connection refused to host: 192.168.2.101; nested exception is: 
	java.net.ConnectException: Connection refused: connect
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
	at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
	at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
	at sun.rmi.server.UnicastRef.newCall(Unknown Source)
	at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
	at Client.main(Client.java:11)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source)
	at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source)
	... 6 more
Das heißt doch, dass er den Server nicht sehen kann, oder?
Anpingen kann ich den aber...
 
Zuletzt bearbeitet von einem Moderator:

L-ectron-X

Gesperrter Benutzer
Bin mir nicht sicher, es ist schon ziemlich lange her, dass ich was mit RMI gemacht habe.
...müsste man nicht den RMI-Port öffnen?
 

Ebenius

Top Contributor
Du müsstest im Client eigentlich [c]LocateRegistry.getRegistry(SERVER_HOST)[/c] aufrufen. Sonst versucht Dein Client auf dem eigenen Host die Registry zu finden. Oder hab ichs falsch verstanden?

Ebenius
 

Hatschi

Aktives Mitglied
müsste dann da also stehen:
Java:
LocateRegistry.getRegistry("192.168.178.13:" + PORT)
Aber wäre das nicht eigentlich sinnlos? Das eigentliche "lookup" der Methode mache ich ja später, und zwar mit der IP und dem PORT. Wäre ja eigentlich doppelt-gemoppelt, oder nicht?
 
Zuletzt bearbeitet:

Ebenius

Top Contributor
Die API-Doc von [c]Registry.lookup()[/c] sagt:
Returns the remote reference bound to the specified name in this registry.
Sprich: Was Du nicht in die Registry eingetragen hast wird bei [c]lookup()[/c] auch nicht gefunden. In die Registry auf dem Client trägst Du nichts ein, also kann da auch nichts rausgeholt werden.

Ich hab schon ewig nicht mehr mit RMI gespielt, vielleicht verstehe ich's ja falsch.

Nachtrag:
Aber wäre das nicht eigentlich sinnlos? Das eigentliche "lookup" der Methode mache ich ja später, und zwar mit der IP und dem PORT. Wäre ja eigentlich doppelt-gemoppelt, oder nicht?
Dein Aufbau kann ja auch anders aussehen. Man habe einen Server A der als Registrar dient. Man habe vier andere Rechner B-E die verschiedene Dienste ausführen und sich in der Registry auf A anmelden. Man habe weiterhin Clients die alle in der Registry von A nachfragen, aber einzelne Dienste von B-E nutzen wollen. Einmal fragt man eben die Registry (auf A) an und aus der holt man sich die Referenzen zu den Diensten (auf B-E).

Ebenius
 
Zuletzt bearbeitet:

Hatschi

Aktives Mitglied
also ich hab das jetzt mal ausprobiert...
Java:
Registry registry = LocateRegistry.getRegistry("rmi://" + args[0] + ":" + PORT);
geht immer noch nicht...
Das interessante daran: schreibe ich das jetzt so, geht das auch nicht wenn ich Server und Client aufm selben Rechner laufen lasse. Trage ich hingegen bei getRegistry nur den Port ein dann geht das (im übrigen genau so, wie wenn ich das ganz weglasse...)
 

Hatschi

Aktives Mitglied
Ok, ich habs jetzt gelöst. Der Fehler liegt darin, dass man bei getRegistry die IP und den Port eintragen muss und nicht bei lookup. Ist eigentlich auch klar...

Java:
final int PORT = Registry.REGISTRY_PORT;
final String IP = args[0];
		
Registry registry = LocateRegistry.getRegistry(IP, PORT);
Adder adder = (Adder)registry.lookup("Adder");
 

L-ectron-X

Gesperrter Benutzer
Ich habe das immer für den Server so gemacht:
Java:
LocateRegistry.createRegistry(Registry.REGISTRY_PORT); //RMI-Registry starten
Registry registry = LocateRegistry.getRegistry();

Vorteil dabei, ich brauche mir um einen Port keine Sorgen machen, es wird der Standard-Port für RMI (1099) belegt. Gleichzeitig wird automatisch die RMI-Registry gestartet. Man braucht das also nicht von Hand oder Skript zu tun.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Connection refused? Netzwerkprogrammierung 2
D Connection refused Netzwerkprogrammierung 3
C Socket Connection refused bei Internetverbindung - Welcher Port? Netzwerkprogrammierung 5
H java.net.ConnectException: Connection refused Netzwerkprogrammierung 3
A Chatprogramm: Connection refused Netzwerkprogrammierung 4
T RMI RMI und VPN - callbackObject Connection refused Netzwerkprogrammierung 13
0din Connection refused bei localhost?! Netzwerkprogrammierung 7
A RMI java.rmi.ConnectException: Connection refused to host: 1 Netzwerkprogrammierung 4
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
R ConnectException: Connection refused to host: 192.168.1.4 ? Netzwerkprogrammierung 8
tfa RMI-Problem: Connection refused to host: 127.0.0.2 Netzwerkprogrammierung 4
B RMI & Connection refused to host Netzwerkprogrammierung 12
D Socketverbindung schlägt fehl - Connection refused: connect Netzwerkprogrammierung 4
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
Thalion TCP Connection zu langsam Netzwerkprogrammierung 2
S Client Server Connection Netzwerkprogrammierung 4
C Handle Connection Problem Netzwerkprogrammierung 3
R Socket InputStream readObject > Connection Reset Netzwerkprogrammierung 3
L ssh connection; Zugriff auf 'screen' Prozess Netzwerkprogrammierung 5
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3
B Client/Server Connection Problem Netzwerkprogrammierung 2
D Socket Socket absichtlich so schließen, dass Gegenseite java.net.SocketException: Connection reset wirft Netzwerkprogrammierung 4
K Socket Exception Connection reset Netzwerkprogrammierung 9
VfL_Freak Socket SocketException: Connection reset Netzwerkprogrammierung 11
C Socket Socket: Connection timed out Netzwerkprogrammierung 3
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
RELAXccc HTTP Connection timed out: connect ?an was kann es liegen? Netzwerkprogrammierung 4
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
N Socket verliert die Connection. Netzwerkprogrammierung 4
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
M RMI - Connection Problem Netzwerkprogrammierung 7
trash HTTP Internet Connection bei Proxy ?! Netzwerkprogrammierung 3
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
S SSH-Connection - Auto-Vervollständigung mittels TAB Netzwerkprogrammierung 4
A Socket Client Server Connection wird aufgebaut aber keine daten geschickt. Netzwerkprogrammierung 5
J Connection Speed Test ohne Applet Netzwerkprogrammierung 5
M FTP-Connection über FTP-Proxy Netzwerkprogrammierung 20
T Wie connection Reset abfragen/abfangen? Netzwerkprogrammierung 10
G InputStreamReader lässt TCP-Connection offen Netzwerkprogrammierung 9
X URL connection Problem Netzwerkprogrammierung 3
sparrow Connection Reset bei Webserver, Java WebStart als Client Netzwerkprogrammierung 9
G Connection zu MySQL ohne ODBC Netzwerkprogrammierung 8
IT-MaD Connection reset by peer: socket write error Netzwerkprogrammierung 2
G httpUnit: Connection timed out Netzwerkprogrammierung 3
lhein java.io.IOException: Unable to establish loopback connection Netzwerkprogrammierung 4
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
B Multithreaded Server: Connection reset Netzwerkprogrammierung 4
T JDBC Verbindungsabbruch (Connection reset) Netzwerkprogrammierung 2
M SocketException: Connection reset Netzwerkprogrammierung 10
G MAC / IP Connection Netzwerkprogrammierung 10
M Problem: connection abbrechen und login erkennen Netzwerkprogrammierung 2
M Umlaute gehen bei URL Connection verloren Netzwerkprogrammierung 6
M seltsam: java.net.SocketException: Connection reset Netzwerkprogrammierung 1
B RMI Connection Problem Netzwerkprogrammierung 13
T Dateien wia P2P Connection versenden Netzwerkprogrammierung 2
H java.net.SocketException: Software caused connection abort Netzwerkprogrammierung 4
R FTP Connection zu Server Netzwerkprogrammierung 4
M Ausgangsport für FTp-Connection festlegen??? Netzwerkprogrammierung 3
R RMI Registry Netzwerkprogrammierung 1
C RMI Bereits bestehende Registry nutzen Netzwerkprogrammierung 2
T RMI Registry nicht mit beenden. Netzwerkprogrammierung 6
K Getrennte Rechner für RMI-Server/RMI-Registry, bzw. Alternativen? Netzwerkprogrammierung 5
Saxony RMI - eigene Registry (no security manager: RMI class loader disabled) Netzwerkprogrammierung 6
T RMI Registry nachsehen was drinnen ist Netzwerkprogrammierung 2
K Registry Netzwerkprogrammierung 4
R Registry RMI starten ? Netzwerkprogrammierung 7
F Problem mit RMI Registry Netzwerkprogrammierung 4
M RMI: Registry.bind oder Naming.bind? Netzwerkprogrammierung 2
E Mit Java Registry ändern? Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben