1 Reply Latest reply: Feb 29, 2012 6:04 AM by petal1 RSS

JNDI not resolving localhost to 127.0.0.1

petal1 Newbie

Hello,

 

I have an Amazon EC2 instance (could be any cloud server, or even any server I guess) running Open SuSE. I am running JBoss 4.0.4GA on there. When I do a JNDI lookup with a provider URL of "localhost:1099", I may get an error depending on what is in /etc/hosts.

What I don't understand is why JBoss is not resolving localhost to 127.0.0.1.

 

When /etc/hosts contains:

    127.0.0.1              localhost

    <external-ip-not-shown>  MYHOSTNAME

 

then JBoss resolves localhost to the external IP. If the /etc/hosts file contains:

    127.0.0.1              localhost

    <internal-ip-not-shown> MYHOSTNAME

 

then JBoss resolves localhost to the internal IP.

 

So clearly /etc/hosts is involved in JBoss’s resolution of names. But when I do:

dig localhost +short +identify

It returns:

127.0.0.1 from server 172.16.0.23 in 80 ms.

 

Apparently Amazon EC2 instances don't have any awareness of their external IP, so the /etc/hosts should reference only the internal IP address. Indeed my application works fine when the /etc/hosts file contains only the internal IP but my issue is why JBoss does not resolve localhost to 127.0.0.1 ?

 

Just as a bit of extra info, I executed the code below:

    InetAddress ina= InetAddress.getByName("localhost");

   System.out.println("getCanonicalHostName()=" +ina.getCanonicalHostName());

   System.out.println("getHostAddress()=" +ina.getHostAddress());

   System.out.println("getHostName()=" +ina.getHostName());

   System.out.println("toString()=" +ina.toString());

 

and it returned:

     getCanonicalHostName()=localhost

     getHostAddress()=127.0.0.1

     getHostName()=localhost

     toString()=localhost/127.0.0.1

 

Thank you for any help.