I have configured my Connector to listen to address="127.0.0.1" only. Single hostname for this is "localhost". Though, the HTMLManager displays in Server Information my regular host name and the IP address of the second NIC (VirtualBox Host-Only Adapter). Code: try { InetAddress address = InetAddress.getLocalHost(); args[6] = address.getHostName(); args[7] = address.getHostAddress(); } catch (UnknownHostException e) { args[6] = "-"; args[7] = "-"; } I would expect to display the information this Connector and Host is accepting, remove this information altogether or document that this information does not reflect configuration (docs/html-manager-howto.html#Server_Information).
This section is information on the server, so this looks fine to me.
I would html-manager-howto.html#Server_Information at least expect to say that. No more, no less.
I do not understand why you are unwilling to add two sentences to the docs about this. This is not rocket science.
(In reply to Michael Osipov from comment #0) > I have configured my Connector to listen to address="127.0.0.1" only. Single > hostname for this is "localhost". Though, the HTMLManager displays in Server > Information my regular host name and the IP address of the second NIC > (VirtualBox Host-Only Adapter). > > Code: > try { > InetAddress address = InetAddress.getLocalHost(); > args[6] = address.getHostName(); > args[7] = address.getHostAddress(); > } catch (UnknownHostException e) { > args[6] = "-"; > args[7] = "-"; > } > > I would expect to display the information this Connector and Host is > accepting, remove this information altogether or document that this > information does not reflect configuration > (docs/html-manager-howto.html#Server_Information). Yeah, InetAddress.getLocaleHost() doesn't behave the way that most people would expect. Most people would expect it to grab the "localhost" IP address and use that. It doesn't. Instead, it asks the OS what the hostname of the current machine is, then uses that. So if your hostname is "erasmus", then InetAddress.getLocalHost will return that name + its IP address even if you have bound the connector to 127.0.0.1. Note that there is no relationship whatsoever between your <Connector> and InetAddress.getLocaLhost. InetAddress has no idea you are running Tomcat or using a Connector or that your connector is bound to 127.0.0.1. I'll have a look at this because, as you say, it's quite surprising. Unfortunately, most servers will be configured to listen to 0.0.0.0 (all interfaces) and then ... we're back to using InetAddress.getLocalHost to figure out what our "host name" is.
(In reply to Christopher Schultz from comment #4) > (In reply to Michael Osipov from comment #0) > > I have configured my Connector to listen to address="127.0.0.1" only. Single > > hostname for this is "localhost". Though, the HTMLManager displays in Server > > Information my regular host name and the IP address of the second NIC > > (VirtualBox Host-Only Adapter). > > > > Code: > > try { > > InetAddress address = InetAddress.getLocalHost(); > > args[6] = address.getHostName(); > > args[7] = address.getHostAddress(); > > } catch (UnknownHostException e) { > > args[6] = "-"; > > args[7] = "-"; > > } > > > > I would expect to display the information this Connector and Host is > > accepting, remove this information altogether or document that this > > information does not reflect configuration > > (docs/html-manager-howto.html#Server_Information). > > Yeah, InetAddress.getLocaleHost() doesn't behave the way that most people > would expect. Most people would expect it to grab the "localhost" IP address > and use that. It doesn't. > > Instead, it asks the OS what the hostname of the current machine is, then > uses that. So if your hostname is "erasmus", then InetAddress.getLocalHost > will return that name + its IP address even if you have bound the connector > to 127.0.0.1. > > Note that there is no relationship whatsoever between your <Connector> and > InetAddress.getLocaLhost. InetAddress has no idea you are running Tomcat or > using a Connector or that your connector is bound to 127.0.0.1. > > I'll have a look at this because, as you say, it's quite surprising. > > Unfortunately, most servers will be configured to listen to 0.0.0.0 (all > interfaces) and then ... we're back to using InetAddress.getLocalHost to > figure out what our "host name" is. I am aware of this. That's the reason I am reporting this. The information displayed is misleading. I would at least expect the docs to be updated or this information removed.
(In reply to Christopher Schultz from comment #4) > Instead, it asks the OS what the hostname of the current machine is, then > uses that. So if your hostname is "erasmus", then InetAddress.getLocalHost > will return that name + its IP address even if you have bound the connector > to 127.0.0.1. This is a manager webapp, and it is a section on server information, so it should display the server host name, not the particular connector information. This sounds really intuitive to me, it is like that in all admin webapps I've seen so far. So I will have to veto the proposed change for the time being and I also don't see the point of documenting it (server host name means the server host name ... ok, nice).
(In reply to Remy Maucherat from comment #6) > (In reply to Christopher Schultz from comment #4) > > Instead, it asks the OS what the hostname of the current machine is, then > > uses that. So if your hostname is "erasmus", then InetAddress.getLocalHost > > will return that name + its IP address even if you have bound the connector > > to 127.0.0.1. > > This is a manager webapp, and it is a section on server information, so it > should display the server host name, not the particular connector > information. This sounds really intuitive to me, it is like that in all > admin webapps I've seen so far. So I will have to veto the proposed change > for the time being and I also don't see the point of documenting it (server > host name means the server host name ... ok, nice). The funny thing is, I do not even see my machines host address by the address of my VirtuaBox Host-Only device which has a higher priority for some reason: C:\Users\mosipov>route print =========================================================================== Schnittstellenliste 8...0a 00 27 00 00 08 ......VirtualBox Host-Only Ethernet Adapter 4...d0 50 99 93 d7 0e ......Intel(R) Ethernet Connection (2) I219-V 1...........................Software Loopback Interface 1 6...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter 7...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface 3...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2 ===========================================================================
(In reply to Remy Maucherat from comment #6) > (In reply to Christopher Schultz from comment #4) > > Instead, it asks the OS what the hostname of the current machine is, then > > uses that. So if your hostname is "erasmus", then InetAddress.getLocalHost > > will return that name + its IP address even if you have bound the connector > > to 127.0.0.1. > > This is a manager webapp, and it is a section on server information, so it > should display the server host name, not the particular connector > information. This sounds really intuitive to me, it is like that in all > admin webapps I've seen so far. > So I will have to veto the proposed change for the time being and I > also don't see the point of documenting it (server host name means > the server host name ... ok, nice). What proposed change? I merely re-opened this issue because there is a reasonable request from the community for clarification.
I wasn't fine with changing the output to something like request.getLocalName(). I am fine with a clarification but it did seem intuitive enough at this point.
I've added some clarifications for the docs in: 9.0.x for 9.0.0.M10 onwards 8.5.x for 8.5.5. onwards 8.0.x for 8.0.37 onwards 7.0.x for 7.0.71 onwards