Me pongo en situación (connection refused, conexion rehusada, java rmi y su madre):
Estás desarrollando un aplicación con Java RMI para linux (una fedora core 6, por ejemplo). Hasta ahora va todo bien, lo has probado en local y perfecto. Vas al siguiente paso, un servidor en una máquina y otro en otra. E intentas acceder desde un cliente de una máquina al servidor de la otra máquina. En el servidor has lanzado el rmiregistry, las opciones con que lances el rmiregistry no nos importan demasiado. El caso es que el registro rmi está lanzado, el servidor ha registrado el objeto y queda a la espera de peticiones. Nuestro cliente, y esto es importante, hace un Naming.lookup y encuentra el objeto en la otra máquina. Es importante que lo encuentre, si no lo encuentra algo estamos haciendo mal, revisa!. Si lo encuentra, entonces vamos a llamar a uno de los métodos del objeto remoto. Y nada más hacer la llamada nos encontramos con este error:
Caused by: java.rmi.ConnectException:
Connection refused to host: 127.0.0.1;
nested exception is:
java.net.ConnectException: Connection refused
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 ...
(y lo que sigue, pero para que poner el resto de la pila si con esto nos vale)
Estamos intentando acceder a un objeto en otra máquina, que de hecho hemos encontrado (con el Naming.lookup) pero no nos deja ejecutar uno de sus métodos. Y por lo menos pone
Connection refused, porque si tu versión de java está traducida, te pondrá "
Conexión rehusada". Piensa en rehusar como en rechazar, quítate de la cabeza nada que tenga que ver con volver a usar!!! (Suele pasar). Bien que es lo que pasa aquí? Pues resumiendo, cuando el cliente ha encontrado el objeto remoto (Naming.lookup) lo que obtiene es una dirección ip para poder acceder a él. Da igual que hayamos accedido al objeto a partir del nombre de la máquina. El rmi lo que hace es devolver una ip, que obtiene del /etc/hosts, para no tener que acceder siempre a ese fichero y ver la ip que corresponde con el nombre de la máquina. Me explico fatal. El tema está en que el fichero /etc/hosts seguramente tengas algo así:
127.0.0.1 localhost mimaquina
Cuando para que te funcione, mimaquina debería apuntar a la ip "real" de tu maquina (/sbin/ifconfig para ver la ip en linux, ipconfig en windows por comando)
Contenido necesario de "etc/hosts" (para Linux Fedora)
127.0.0.1 localhost
192.168.0.xxx mimaquina
Espero que te sirva de utilidad, yo perdí mucho tiempo con este tema, mucho, mucho... Si estás con las prácticas de ASO, ánimo. Si estás con otra cosa, ánimo también.
Un saludo!
yo por mi experiencia te puedo decir que al llamar al 11818, hacen lo que hacian en el 1003 consultan las bases de datos de telefonica y si no encuentran nada pues se siente, mientras que en el 11822 te consultan esa base de datos, la de las paginas amarillas e incluso google, como es logico no te van a dar un servicio mejor por el mismo precio
---------------------------------------------------------------------------------------