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?
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.
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.
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
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.
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
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.
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.
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);
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.
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