RMI setSoTimeout wird ignoriert?

Dit_

Bekanntes Mitglied
Hallo

So setze ich Timeout auf der Client Seite:

Java:
RMISocketFactory.setSocketFactory(new RMISocketFactory() {
            
            @Override
            public Socket createSocket(String host, int port) throws IOException {
                Socket socket = new Socket();
                /*
                 * Timeout auf 2 Minuten...
                 */
                int timeoutMillis = 120000;
                socket.setSoTimeout(timeoutMillis);
                socket.connect(new InetSocketAddress(host, port), timeoutMillis);
                return socket;
            }
            
            @Override
            public ServerSocket createServerSocket(int port) throws IOException {
                return new ServerSocket(port);
            }
        });

Leider bricht die Verbindung nach ca 20 Sekunden immer ab..
Setze ich den Timeout auf 1 Sekunde dann funktioniert es, nach 1 sekunde gibt es exception. Das gleiche Ergebnis mit 1.5 Sekunden... Wenn ich aber wie gesagt über 20 Sekunden gehe bricht die verbindung meistens nach 21 Sekunden ab: Connection Timed Out: connect

Hat jemand ne idee was ich machen könnte?
Soll ich sockettimeout auch auf der Serverseite setzen?

Danke schon mal!
 
wird denn überhaupt eine Verbindung aufgebaut, kannst du innerhalb der 20 sec etwas machen,
vielleicht Rekorde an hin und her gesendeten Nachrichten versuchen,
ob nix tun, 1 Nachricht, 5 oder 5000, immer nach 20 sec Abbruch?
während Client und Server gerade in Schleifen stecken oder worum geht es konkret?

betrifft es irgendwelche unbekannten RMIRegistries, oder auch ganz simple ServerSocker + Socket, alles eigener Code,
gehen einfache Internetbeispiele komplett ohne RMI (etwa Chat-Beispiel..) oder scheitern diese auch?

wenn du vorher nichts gesetzt hast und nach 20 sec Abbruch ist, dann durchaus überlegenswert ob auf beiden Seiten die Zeit hochzusetzen ist,
anderseits sollte das bei normaler Verbindung ja eher kein Problem sein, bzw. das beste wäre noch wenn im Moment aus irgendeinem Grund gar nicht erst eine korrekte Verbindung zu Stande kommt, der Aufbau nach 20 sec abbricht

"Connection Timed Out: connect" kann man auch suchen, etwa
networking - java.net.ConnectException :connection timed out: connect? - Stack Overflow
 
Also während die Verbindung aufgebaut wird kann ich gar nicht machen.
Ich habe den Klient auf diesem RMI-Server-Rechner, lokal also, ausgeführt, funktionierte alles einwandfrei. Zu hause zwischen zwei Rechner funktioniert auch. Nur in unserem FirmenNetz kommt es zu diesem Problem.
Dazu muss man sagen dass der Rechner auf dem RMI-Server läuft, extrem langsam ist.

Wie kann ich erkennen wessen "schuld" das ist, dass die Verbindung nicht zu Stande kommt?

Danke!
 
das sind so Themen für die Netzwerkadministratoren erfunden wurden,
leider überhaupt nicht mein Thema, kann dir nach forscher erster Antwort wohl nicht weiterhelfen

FirmenNetz hättest du ruhig gleich erwähnen können, da gibts garantiert irgendwelche Einschränkungen, Firewalls usw.
 

Zurück
Oben