Linux 환경에서 C3P0 Failed to get local InetAddress for VMID 솔루션

2473 단어 c3p0
오늘 자바 프로젝트에서 C3P0 데이터 원본을 사용했습니다. 프로그램은 Windows에서 실행되는 데 아무런 문제가 없지만 서버(Linux 환경)에 설치하여 실행할 때 이상이 발생했습니다. 이상 정보는 다음과 같습니다.
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
java.net.UnknownHostException: w: w
	at java.net.InetAddress.getLocalHost(Unknown Source)
	at com.mchange.v2.c3p0.impl.C3P0ImplUtils.generateVmId(C3P0ImplUtils.java:120)
	at com.mchange.v2.c3p0.impl.C3P0ImplUtils.<clinit>(C3P0ImplUtils.java:98)
	at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<init>(PoolBackedDataSourceBase.java:227)
	at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.<init>(AbstractPoolBackedDataSource.java:62)
	at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:109)
	at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:105)
	.......
Caused by: java.net.UnknownHostException: w
	at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
	at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)
	at java.net.InetAddress.getAddressesFromNameService(Unknown Source)
	... 23 more

      
언뜻 보기에는 영문도 모릅니다. 지금까지 이런 이상을 만난 적이 없습니다. 결국 Google에서 해결책을 찾았습니다.
문제의 원인
먼저 Unknown HostException: w에서 w는 어떻게 얻었는지 봅시다.cat/etc/sysconfig/network 파일은 다음과 같습니다.
[root@w picture]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=w

HOSTNAME=w, 오오,
여기를 보자마자 버드나무가 어두워지고 꽃이 피는 것을 느꼈다. 원래는 시스템이 호스트 이름 w에 대응하는 IP를 찾지 못했기 때문에 리눅스의hosts 파일만 수정하면 된다.
해결 방법에서 오류 원인을 분석했는데 주로 시스템이 호스트 이름 w에 대응하는 IP를 찾지 못했기 때문에 리눅스의hosts 파일을 수정하면 된다.구체적인 조작 절차는 다음과 같다. 먼저cat/etc/hosts 명령을 실행한다.
[root@w picture]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

그런 다음 vi/etc/hosts 명령을 실행합니다.
첫 줄 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 후 w를 추가하여 저장하면 됩니다.
수정된 hosts 파일은 다음과 같습니다.
[root@w picture]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 w
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Linux에서 도메인을 찾을 때 보통 파일/etc/hosts를 먼저 찾고, 찾을 수 없을 때 DNS 서버에 요청하는 것을 가리킨다.
오케이, 여기까지 문제는 해결됐어!

좋은 웹페이지 즐겨찾기