Linux环境下C3P0 Failed to get local InetAddress for VMID 解决办法

参考:http://blog.csdn.net/top_code/article/details/38703769

今天在做一个Java项目中用到了C3P0数据源,程序在Windows下运行没有任何问题,但是往服务器(Linux环境)上部署 运行的时候出现异常了,异常信息如下:

 

[html]  view plain  copy
 
  1. 2014-08-19 20:51:01 [INFO] Failed to get local InetAddress for VMID. This is unlikely to matter. At all. We'll add some extra randomness  
  2. java.net.UnknownHostException: w: w  
  3.     at java.net.InetAddress.getLocalHost(Unknown Source)  
  4.     at com.mchange.v2.c3p0.impl.C3P0ImplUtils.generateVmId(C3P0ImplUtils.java:120)  
  5.     at com.mchange.v2.c3p0.impl.C3P0ImplUtils.<clinit>(C3P0ImplUtils.java:98)  
  6.     at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<init>(PoolBackedDataSourceBase.java:227)  
  7.     at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.<init>(AbstractPoolBackedDataSource.java:62)  
  8.     at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:109)  
  9.     at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:105)  
  10.     .......  
  11. Caused by: java.net.UnknownHostException: w  
  12.     at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)  
  13.     at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)  
  14.     at java.net.InetAddress.getAddressesFromNameService(Unknown Source)  
  15.     ... 23 more  


      

 

        乍一看感觉莫名其妙,从来都没碰到过这样的异常,最后在Google上找到了解决办法,先说明一下导致这个异常的原因,然后给出解决办法。

问题原因

         先看看UnknownHostException: w 中w是怎么得来的吧,cat /etc/sysconfig/network 文件,内容如下:

[html]  view plain  copy
 
  1. [root@w picture]# cat /etc/sysconfig/network  
  2. NETWORKING=yes  
  3. HOSTNAME=w  


          HOSTNAME=w,噢噢,看到这里顿时感觉 柳暗花明了,原来是因为系统没有找到主机名w对应的IP,只需修改Linux的hosts文件即可。

 


解决办法
          上面已经分析错误原因了,主要是因为系统没有找到主机名w对应的IP,修改Linux的hosts文件即可。具体操作步骤如下:
首先,执行 cat /etc/hosts 命令,如下:

 

[html]  view plain  copy
 
  1. [root@w picture]# cat /etc/hosts  
  2. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
  3. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6  

 

 

然后再执行 vi /etc/hosts 命令

在第一行 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 后加上 w 保存即可。

修改完之后的hosts文件如下:

[html]  view plain  copy
 
  1. [root@w picture]# cat /etc/hosts  
  2. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 w  
  3. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6  

 

 

Linux查找域名时通常指先查找文件/etc/hosts,找不到时再向DNS服务器请求。

你可能感兴趣的:(Linux环境下C3P0 Failed to get local InetAddress for VMID 解决办法)