T
tuxedo
Gast
Hallo zusammen,
ich weiß, das ist ein leidiges Thema, aber auch die Suche hat mich nicht weiter gebracht.
Ich habe also folgendes Szenario:
Server hinter einem Router am DSL-Anschluss:
interne Adresse: 192.168.0.249
externe Adresse: meindyndnsname.homelinux.org
RMI Registry läuft auf Port 2000 (bedingt durch andere Tools)
Port 2000 im Router entsprechend unter Port-Forwarding auf IP 192.168.0.249 weiterleiten lassen
Sooo. Befindet sich ein Client lokal im Netzwerk (192.168.0.x) des RMI-Servers, kann er problemlos eine Verbindung mit 192.168.0.249 aufnehmen. Klappt bestens.
Befindet sich der Client irgendwo im Internet und versucht nun unter meindyndnsname.homelinux.org den RMI Server zu erreichen haut das für's erste hin:
mServerHost => meindyndnsname.homelinux.org
mServerPort => 2000
Hier gibts noch keinen Fehler. Ich kann das Objekt prima bei der Registry abholen. Aber jetzt kommts:
Sobald ich eine Methode in diesem Server-Objekt versuche aufzurufen bekommt mein Client folgende Exception:
Ich deute das mal so:
Das bei der Registry abgeholte Objekt weiß dass die Registry auf 192.168.0.249 zu erreichen ist. Und der Client hält sich da auch dran. Nur dumm dass ich von außen nicht an die interne Adresse ran komme.
Wieso nimmt der Client nicht die Adresse die ich ihm beim Naming.lookup mitgegeben habe?
Eine Lösung wäre vermutlichdem Server zu sagen: Hör zu, die Registry ist nicht unter 192.168.0.249 zu erreichen, sondern unter meindyndnsname.homelinux.org. Dann würde der Server-Objekt-Methodenaufruf des Clients vermutlich auch klappen.
Aber
1) hab ich kein Plan wie ich das anstelle
und
2) wäre das ganze für mich flexibler wenn ich am Server nicht erst die externe Adresse definieren müsste und der Client einfach die Adresse nimmt die ich ihm bei Naming.lookup gegeben hab.
Kann mir da jmd. weiterhelfen ?
- Alex
P.S. An einer Security-Einstellung kanns ja fast nicht liegen, da der Client tatsächlich die falsche Adresse benutzt
L-ectron-X hat diesen Beitrag am 19.10.2007 um 12:51 editiert.
Code-Tags eingefügt.
ich weiß, das ist ein leidiges Thema, aber auch die Suche hat mich nicht weiter gebracht.
Ich habe also folgendes Szenario:
Server hinter einem Router am DSL-Anschluss:
interne Adresse: 192.168.0.249
externe Adresse: meindyndnsname.homelinux.org
RMI Registry läuft auf Port 2000 (bedingt durch andere Tools)
Port 2000 im Router entsprechend unter Port-Forwarding auf IP 192.168.0.249 weiterleiten lassen
Sooo. Befindet sich ein Client lokal im Netzwerk (192.168.0.x) des RMI-Servers, kann er problemlos eine Verbindung mit 192.168.0.249 aufnehmen. Klappt bestens.
Befindet sich der Client irgendwo im Internet und versucht nun unter meindyndnsname.homelinux.org den RMI Server zu erreichen haut das für's erste hin:
Code:
mServerSessionFactory = (ServerSessionFactory) Naming.lookup("//"+mServerHost+":"+mServerPort +"/Serverprogramm");
mServerHost => meindyndnsname.homelinux.org
mServerPort => 2000
Hier gibts noch keinen Fehler. Ich kann das Objekt prima bei der Registry abholen. Aber jetzt kommts:
Sobald ich eine Methode in diesem Server-Objekt versuche aufzurufen bekommt mein Client folgende Exception:
java.rmi.ConnectException: Connection refused to host: 192.168.0.249; nested exception is:
java.net.ConnectException: Connection timed out: connect
Ich deute das mal so:
Das bei der Registry abgeholte Objekt weiß dass die Registry auf 192.168.0.249 zu erreichen ist. Und der Client hält sich da auch dran. Nur dumm dass ich von außen nicht an die interne Adresse ran komme.
Wieso nimmt der Client nicht die Adresse die ich ihm beim Naming.lookup mitgegeben habe?
Eine Lösung wäre vermutlichdem Server zu sagen: Hör zu, die Registry ist nicht unter 192.168.0.249 zu erreichen, sondern unter meindyndnsname.homelinux.org. Dann würde der Server-Objekt-Methodenaufruf des Clients vermutlich auch klappen.
Aber
1) hab ich kein Plan wie ich das anstelle
und
2) wäre das ganze für mich flexibler wenn ich am Server nicht erst die externe Adresse definieren müsste und der Client einfach die Adresse nimmt die ich ihm bei Naming.lookup gegeben hab.
Kann mir da jmd. weiterhelfen ?
- Alex
P.S. An einer Security-Einstellung kanns ja fast nicht liegen, da der Client tatsächlich die falsche Adresse benutzt
L-ectron-X hat diesen Beitrag am 19.10.2007 um 12:51 editiert.
Code-Tags eingefügt.