OS가 Window 인 경우에는

String hostAddr = java.net.InetAddress.getLocalHost().getHostAddress();

를 하면 IP를 알 수 있다.

하지만 UNIX나 LINUX에서 사용하게 되면

127.0.0.1 이거나 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();
		}

이렇게 사용하면 된다. 덕분에 이중화 환경에서 실행되는 스케줄링을 하나의 IP에서만 사용할 수 있게 됐다.

 

출처 https://darkhorizon.tistory.com/320#comment16350241