Newsgroup: it.comp.java
Titolo: RMI dietro a un router

Scusate, non capisco se RMI coi router ha dei problemi, se sono io ad essere ritardato o se semplicemente sia l'effetto 31 luglio...
Il mio server, che sta dietro ad un router, fa delle cose stupidissime, giusto per capire:
LocateRegistry.createRegistry(1099);
MyObject obj = new MyObject();
Naming.rebind("//local_ip:1099/TEST" , obj);
poi lo lancio con l'opzione -Djava.rmi.server.hostname=ip_pubblico
e ho impostato il port forwarding della 1099 verso local_ip
Il client invece:
IMyObject remoteObject = (IMyObject)Naming.lookup("//ip_pubblico:1099/TEST");
System.out.println("Lookup ok");
int val=remoteObject.sum(1,2);
System.out.println("val="+val);
Ma qui nascono i problemi!
L'output e' solo "Lookup ok", poi mi arriva una java.rmi.ConnectException: connection timeout
Accetto umilmente qualsiasi consiglio!!
Saluti
CarMas

> L'output e' solo "Lookup ok", poi mi arriva una java.rmi.ConnectException: connection timeout
Se puo' interessare lo stacktrace
java.rmi.ConnectException: Connection refused to host: ip_pubblico; nested exception is:
        java.net.ConnectException: Connection timed out: connect
java.rmi.ConnectException: Connection refused to host: ip_pubblico; nested exception is:
        java.net.ConnectException: Connection timed out: connect
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:567)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:101)
        at SampleServerImpl_Stub.sum(Unknown Source)
        at SampleClient.main(SampleClient.java:16)
Caused by: java.net.ConnectException: Connection timed out: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
        at java.net.Socket.connect(Socket.java:452)
        at java.net.Socket.connect(Socket.java:402)
        at java.net.Socket.<init>(Socket.java:309)
        at java.net.Socket.<init>(Socket.java:124)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFact
ory.java:22)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFact
ory.java:128)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)
        ... 5 more
?_?
sembra quasi che usi un'altra porta rispetto alla 1099... possibile?
Saluti
CarMas

 CarMas
No assolutamente (i numeri dopo i ".java" indicano il numero di riga
del corrispondente file sorgente)
Semplice: la porta 1099 sull'IP pubblico è chiusa (firewall et
similia). Puoi provare tu stesso con un telnet
telnet ip_pubblico 1099
Sistema i firewall e le regole di routing, e assicurati di poter almeno
aprire la connessione con telnet prima di tentare con il client RMI.
-- 
Scientology: se la conosci la eviti, se la conosci non ti uccide...
http://xenu.com-it.net
 - 
http://xenu.freewinds.cx
 - 
http://www.xenu.net
(per rispondere personalmente leva IlDitoDalCulo)
---> 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 <---