Java.rmi.ConnectException: Conexión denegada al host: 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.<init>(Socket.java:425)
    at java.net.Socket.<init>(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 intento 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.la directiva está configurada para otorgar todas las conexiones a todos los puertos y no tengo firewalls habilitados en el servidor o el cliente.

Alguna sugerencia ¿qué podría ser?

Author: Mateusz Piotrowski, 2013-03-28

9 answers

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

 25
Author: user207421,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-29 01:33:27

PROBLEMA RESUELTO

Tuve exactamente el mismo error. Cuando el objeto remoto se vinculó al rmiregistry, se adjuntó con la dirección IP de bucle invertido, que obviamente fallará si intenta invocar un método desde una dirección remota. Para arreglar esto necesitamos establecer el java .rmi.servidor.hostname propiedad a 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 del PC que vincula el objeto remoto en el Registro RMI es 192.168.1.2.

 11
Author: Raydelto Hernandez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-02 00:25:16

Encontré muchas de las preguntas y respuestas sobre este tema, no nada me estaba ayudando - eso es porque mi problema era más básico ( qué puedo decir que no soy un gurú de las redes :) ). Mi dirección ip en /etc/hosts era incorrecta. Lo que había probado incluía 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=A.B.C.D"  #howeverI put the wrong ip here!

export CATALINA_OPTS

Mi problema fue que había cambiado mi dirección ip hace muchos meses, pero nunca actualizé mi archivo /etc/hosts. parece que por defecto la jconsole utiliza la dirección ip hostname-i de alguna manera a pesar de que estaba visualización de procesos locales. La mejor solución era 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 cuando especifique la dirección ip en, por ejemplo, un catalina.sh script:

-Djava.rmi.server.hostname=A.B.C.D
 6
Author: Paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-06 14:37:06

Tal vez su rmiregistry no se cree antes de que el cliente intente conectarse a su servidor y conduciría a esto exception.In Linux, puede utilizar "netstat" para comprobar su rmiregistry sea bond en el puerto correcto que asignó en código java.

 3
Author: CJeremy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-09 01:50:12

Si ha intentado modificar etc/hosts y agregar java.rmi.servidor.la propiedad hostname también, pero aún así el registro está siendo enlazado 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 seleccionó de jvm args

 2
Author: SVashisth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-28 12:18:00

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

ALL

Comodines

También revise el /etc/hostname y /etc/host para ver si podría haber algo mal 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ó en ALL en el archivo /etc/hosts.allow que anteriormente estaba completamente vacío

Ahora todo funciona

No sé lo seguro que es. tienes que leer más sobre posibles opciones para que /etc/hosts.allow haga algo que requiera un toque de seguridad.

 1
Author: Ar maj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-06 21:51:38

Funciona para mí después de deshacerse de "::1" en /etc/hosts.

 0
Author: Joshua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-13 08:17:44

Puede usar LocalRegistry como:

Registry rgsty = LocateRegistry.createRegistry(1888); rgsty.rebind("hello", hello);

 0
Author: Jianxing Fan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-28 09:45:35

Cuando desee conectarse a un servidor remoto con RMI debe agregar una propiedad del sistema igual que:

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

O añadir variable de entorno.

Para mí obtuve La conexión se negó y lo resolví agregando esta línea de código en el lado del servidor:

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

Gracias a otro chico por guiarme para resolverlo.

 -1
Author: Saman Salehi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-13 05:49:47