WAS나 웹서버가 구동되는 서버 IP를 조회할 때 OS가 Windows 계열일 때는
String hostAddr = java.net.InetAddress.getLocalHost().getHostAddress();
를 하면 문제가 없다.
그런데 UNIX나 LINUX에서 해당 소스를 구동하면
java.net.UnknownHostException 등의 에러가 나거나 제대로 된 IP를 반환하지 않는다.
OS나 장치에 상관없이 고정 IP를 가져오기 위해선
String hostAddr = "";
try {
Enumeration<NetworkInterface> nienum = NetworkInterface.getNetworkInterfaces();
while (nienum.hasMoreElements()) {
NetworkInterface ni = nienum.nextElement();
Enumeration<InetAddress> kk= ni.getInetAddresses();
while (kk.hasMoreElements()) {
InetAddress inetAddress = kk.nextElement();
if (!inetAddress.isLoopbackAddress() &&
!inetAddress.isLinkLocalAddress() &&
inetAddress.isSiteLocalAddress()) {
hostAddr = inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
이렇게 사용하면 된다.