You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Grzegorz Grzybek (Jira)" <ji...@apache.org> on 2021/04/08 12:50:00 UTC
[jira] [Created] (KARAF-7096) When rmiServerHost is 127.0.0.1,
RMIServerImpl_Stub still uses hostname's IP
Grzegorz Grzybek created KARAF-7096:
---------------------------------------
Summary: When rmiServerHost is 127.0.0.1, RMIServerImpl_Stub still uses hostname's IP
Key: KARAF-7096
URL: https://issues.apache.org/jira/browse/KARAF-7096
Project: Karaf
Issue Type: Bug
Reporter: Grzegorz Grzybek
Assignee: Grzegorz Grzybek
It's a follow-up of the investigation from KARAF-6955. Copying the description:
I had problem after this change - {{jconsole}} stopped working and sample Java application ended with {{Connection refused}} exception.
I did enjoyable analysis and I found that:
* ports are opened on proper interfaces ({{::ffff:127.0.0.1}} in my case, which is an IPv6 address from _::ffff:0:0/96 CIDR_ that represents _Transition from IPv4_ address block)
* I could connect to RMI Registry at port 1099 and even obtain {{karaf-root}} object from there, which:
** is of {{javax.management.remote.rmi.RMIServer}} interface
** is of {{javax.management.remote.rmi.RMIServerImpl_Stub}} implementation
The problem is that this stub contains:
{noformat}
ref: java.rmi.server.RemoteRef = {sun.rmi.server.UnicastRef2@1918}
...
ref: sun.rmi.transport.LiveRef = {sun.rmi.transport.LiveRef@1925} "[endpoint:[192.168.0.38:44444](remote),objID:[2f23195f:178a6a29327:-7ffa, 4962682433218761153]]"
ep: sun.rmi.transport.Endpoint = {sun.rmi.transport.tcp.TCPEndpoint@1927} "[192.168.0.38:44444]"
host: java.lang.String = "192.168.0.38"
port: int = 44444 (0xAD9C)
{noformat}
The problem is that when {{RMIServerImpl_Stub}} is created *at server side* by karaf.management.server bundle, the bind address of this remote object is NOT taken from {{rmiServerHost}} property of {{org.apache.karaf.management}} PID. It's taken from (top to bottom):
* sun.rmi.transport.tcp.TCPEndpoint#getLocalEndpoint()
* java.net.InetAddress#getLocalHost()
* java.net.InetAddressImpl#getLocalHostName()
* java.net.InetAddress#getAddressesFromNameService()
* java.net.Inet6AddressImpl#lookupAllHostAddr()
* getaddress() libc method
* /etc/hosts
The way to solve this is to set {{java.rmi.server.hostname}} system property to 127.0.0.1, so the Stub contains proper address.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)