Zacznę od początku:
Klient (uruchomiony na komputerze z systemem Windows XP, java
1.5.0_09, ze swojego pliku konfiguracyjnego zna adres IP serwera) nie
łączył się z serwerem (uruchomionym na Kubuntu 6.10, java 1.5.0_08)
wyrzucając wyjątek
java.rmi.ConnectException: Connection refused to host: 127.0.1.1;
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.invoke(Unknown Source)
Jednocześnie, co dosyć dziwne (i co pozwala mi przypuszczać, że sprawa
zależy od konfiguracji systemu) nie było najmniejszego problemu w
drugą stronę - to znaczy, jeśli serwer uruchomiony był na Windows, to
klient uruchomiony na Linuksie łączył się z nim natychmiast.
W pliku /etc/hosts na serwerze znajdował się wpis z 127.0.1.1,
zmieniłem go próbnie na 192.168.0.33 (adres serwera w sieci lokalnej)
i to w pewnym sensie pomogło, bo klient wreszcie łączy się z
serwerem... ale dopiero po minucie. Potem już działa dobrze. Coś jest
ewidentnie nie tak, ale nie udało mi się dojść do źródła problemu. W
sieci wynalazłem
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5092063
http://forum.java.sun.com/thread.jspa?messageID=3458680�
http://forum.java.sun.com/thread.jspa?forumID=58&tstart=0&threadID=288759&trange=15
jednak nie było tam nic, co by mi dało więcej niż to, do czego sam
doszedłem. Nie wydaje mi się, żeby to był bug opisany w pierwszym
linku, bo miał on zostać poprawiony już w wersji 1.5.0_06. Tym
niemniej, objawy są bardzo podobne.
Dodam jeszcze, że serwer ma działać wyłącznie w sieci lokalnej z
zaledwie kilkoma komputerami, mam też pełne prawa do administrowania
nim.
Czy ktoś zetknął się z tego rodzaju przypadkiem, wie co zrobić w
takiej sytuacji (koszmarnie długiego czasu łączenia się z serwerem)?
Pozdrawiam serdecznie i z góry dziękuję za wszelką pomoc
hmmm - a nie masz czasem jakiegoś firewal-a podniesionego na tym linuksie ?
Fuma K
Uruchom serwer ustawiajac system property java.rmi.server.hostname na
adres IP serwera, czyli:
java -Djava.rmi.server.hostname=<ip_serwera> <reszta opcji>
Oczywiscie przedtem sprawdz czy wogole mozesz sie polaczyc na port RMI z
sieci lokalnej: telnet <ip> 1099.
--
Mikolaj Rydzewski <mi...@ceti.pl> http://ceti.pl/~miki/
PGP KeyID: 8b12ab02
There are three kinds of people: men, women, and unix.
> Oczywiscie przedtem sprawdz czy wogole mozesz sie polaczyc na port RMI z
> sieci lokalnej: telnet <ip> 1099.
>
Tak, port jest otwarty.
Też się nad tym zastanawiałem (w końcu skąd miało by się brać aż takie
opóźnienie, skoro w końcu jednak się uruchamia? ); Niestety, to też
nic nie zmienia :(
To z powodu wpisu z /etc/hosts :
127.0.0.1 localhost
127.0.1.1 komputer
ale w momencie gdy wprowadziłem tam IP (w sieci lokalnej) serwera, lub
(co było lepszym wyjściem) ustawiam przez -
Djava.rmi.server.hostname=<ip>, ten problem nie występuje i żadne
wyjątki nie są już wyrzucane. Problemem jest, powtórzę, koszmarnie
długi czas łączenia z serwerem - a dokładniej czas działania metody
lookup() z obiektu klasy InitialContext().
Nie udało mi się jednak znaleźć reguły, nie zależy to w każdym razie
od systemu operacyjnego na którym stoi serwer, ani klient. Być może
jest to kwestia konfiguracji któregoś z powyższych (nie wiedzieć
czemu, jeden z klientów, uruchomiony na linuksie, chodzi poprawnie -
ale jak dotąd nie udało mi się odnaleźć reguły).