java.rmi.ConnectException: Connection se negó a alojar: 127.0.1.1;

java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: java.net.ConnectException: Connection refused at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:128) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148) at com.sun.proxy.$Proxy0.notifyMe(Unknown Source) at CallbackServerImpl.doCallback(CallbackServerImpl.java:149) at CallbackServerImpl.registerForCallback(CallbackServerImpl.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322) at sun.rmi.transport.Transport$1.run(Transport.java:177) at sun.rmi.transport.Transport$1.run(Transport.java:174) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:173) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722) Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) at java.net.Socket.connect(Socket.java:579) at java.net.Socket.connect(Socket.java:528) at java.net.Socket.(Socket.java:425) at java.net.Socket.(Socket.java:208) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613) ... 23 more 

Obtengo esta excepción cuando trato de conectar un cliente remoto a mi servidor. En ambos, servidor y cliente, el nombre de host para el registryUrl de rmi es la dirección IP pública del servidor. También traté de poner localhost en el servidor, pero el error no cambia.

Mi java.policy está configurado para otorgar todas las conexiones a todos los puertos y no tengo firewalls habilitados en el servidor o el cliente.

¿Alguna sugerencia de lo que podría ser?

Este es el elemento A.1 en las preguntas frecuentes de RMI . Debe corregir su archivo / etc / hosts o establecer la propiedad java.rmi.server.hostname en el servidor.

PROBLEMA RESUELTO

Tenía exactamente el mismo error. Cuando el objeto remoto se vinculó al rmiregistry, se adjuntó con la dirección IP loopback, que obviamente fallará si intenta invocar un método desde una dirección remota. Para solucionar esto, necesitamos establecer la propiedad java.rmi.server.hostname en la dirección IP donde otros dispositivos pueden llegar a su rmiregistry a través de la red. No funciona cuando intenta establecer el parámetro a través de la JVM. Funcionó para mí simplemente agregando la siguiente línea a mi código justo antes de vincular el objeto al rmiregistry:

System.setProperty("java.rmi.server.hostname","192.168.1.2");

En este caso, la dirección IP en la red local de la PC que vincula el objeto remoto en el Registro RMI es 192.168.1.2.

Encontré muchas de las preguntas y respuestas sobre este tema, nada me ayudaba, porque mi problema era más básico (¿qué puedo decir que no soy un gurú de redes sociales?). Mi dirección IP en / etc / hosts era incorrecta. Lo que intenté incluir fue lo siguiente para CATALINA_OPTS:

 CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true -Xmx128M -server -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=ABCD" #howeverI put the wrong ip here! export CATALINA_OPTS 

Mi problema era que había cambiado mi dirección IP hace muchos meses, pero nunca actualicé mi archivo / etc / hosts. parece que, de forma predeterminada, jconsole utiliza el nombre de host -i dirección IP de alguna manera, aunque estaba viendo procesos locales. La mejor solución fue simplemente cambiar el archivo / etc / hosts.

La otra solución que puede funcionar es obtener su dirección IP correcta de / sbin / ifconfig y usar esa dirección IP al especificar la dirección IP en, por ejemplo, un script catalina.sh:

 -Djava.rmi.server.hostname=ABCD 

Quizás su rmiregistry no se cree antes de que el cliente intente conectarse a su servidor y esto llevaría a esta excepción. En Linux, puede usar “netstat” para verificar que su enlace esté enlazado en el puerto correcto que asignó en el código java.

Si ha intentado modificar etc / hosts y agregar la propiedad java.rmi.server.hostname también, pero el registro se está enlazando a 127.0.0.1

el problema para mí se resolvió después de establecer explícitamente la propiedad del sistema a través del código, aunque la misma propiedad no se eligió de jvm args

Si está ejecutando en un entorno Linux, abra el archivo /etc/hosts.allow agregue la siguiente línea

 ALL 

Comodines

También verifique el /etc/hostname y /etc/host para ver si hay algún problema allí.

Tuve que cambiar mi / etc / host de

 127.0.0.1 localhost 127.0.1.1 AMK 

a

 127.0.0.1 localhost 127.0.0.1 AMK 

también escribió ALL en el archivo /etc/hosts.allow que anteriormente estaba completamente vacío

Ahora todo funciona

no sé qué tan seguro es debe leer más acerca de las posibles opciones para /etc/hosts.allow para hacer algo que requiera un toque de seguridad.

Funciona para mí después de deshacerme de “:: 1” en / etc / hosts.

cuando desee conectarse al servidor remoto con RMI , debe agregar una propiedad del sistema igual a:

 System.setProperty("java.rmi.server.hostname","Ip or DNS of the server"); 

o agregue una variable de entorno.

Para mí recibí Connection Refused y lo resolví agregando esta línea de código en el servidor:

  java -jar -Djava.rmi.server.hostname="ip or dns of the server" packageName.jar 

Gracias a otro chico por guiarme para resolverlo.

    Intereting Posts