From e084436c9050d20794e4bb5985d1360364d1351c Mon Sep 17 00:00:00 2001 From: eastargh Date: Mon, 7 Sep 2026 18:44:14 +0900 Subject: [PATCH] =?UTF-8?q?UMS=20=EB=B0=9C=EC=86=A1=EC=8B=9C=20was=20ip,?= =?UTF-8?q?=20mac=20=EC=A3=BC=EC=86=8C=20=EB=8F=99=EC=A0=81=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rms/ext/djb/ums/service/UmsService.java | 48 +++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java index cb195c9..1ca7001 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java @@ -4,6 +4,8 @@ import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; +import java.net.InetAddress; +import java.net.NetworkInterface; import java.net.URL; import java.nio.charset.Charset; import java.security.SecureRandom; @@ -119,6 +121,8 @@ public class UmsService { } responseData = sb.toString(); + + log.debug("UMS responseData:" + responseData); } finally { // http 요청 및 응답 완료 후 BufferedReader를 닫는다 if (br != null) { @@ -132,6 +136,44 @@ public class UmsService { + /** + * 표준 헤더의 최초전문송신IP(frst_trnm_ipad)용 - 프로퍼티 설정값 대신 현재 서버(WAS)의 실제 IP를 조회한다. + * 조회 실패 시에는 기존처럼 djb.ums.was_ip_address 프로퍼티 값으로 대체한다. + */ + private String getCurrentServerIp() { + try { + return InetAddress.getLocalHost().getHostAddress(); + } catch (Exception e) { + log.error("getCurrentServerIp error", e); + return propertyService.getPropertyValue("Monitoring", "djb.ums.was_ip_address", ""); + } + } + + /** + * 표준 헤더의 최초전문송신MAC(frst_trnm_mac)용 - 프로퍼티 설정값 대신 현재 서버(WAS)의 실제 MAC 주소를 조회한다. + * 조회 실패(네트워크 인터페이스를 찾지 못하는 경우 포함) 시에는 기존처럼 djb.ums.was_mac_address 프로퍼티 값으로 대체한다. + */ + private String getCurrentServerMac() { + try { + NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()); + byte[] mac = (ni != null) ? ni.getHardwareAddress() : null; + if (mac == null) { + return propertyService.getPropertyValue("Monitoring", "djb.ums.was_mac_address", ""); + } + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < mac.length; i++) { + if (i > 0) { + sb.append(":"); + } + sb.append(String.format("%02X", mac[i])); + } + return sb.toString(); + } catch (Exception e) { + log.error("getCurrentServerMac error", e); + return propertyService.getPropertyValue("Monitoring", "djb.ums.was_mac_address", ""); + } + } + private String makeBodyData(MessageRequest messageRequest) { // 리턴값 String rtnVal = ""; @@ -147,9 +189,9 @@ public class UmsService { stdHeadVO.setStnd_mesg_ver("R10"); stdHeadVO.setOrtr_guid(jsonData[2]); stdHeadVO.setSect_ecrpt_yn("N"); - stdHeadVO.setFrst_trnm_ipad(propertyService.getPropertyValue("Monitoring", "djb.ums.was_ip_address", "")); - stdHeadVO.setFrst_trnm_ipv4_addr(propertyService.getPropertyValue("Monitoring", "djb.ums.was_ip_address", "")); - stdHeadVO.setFrst_trnm_mac(propertyService.getPropertyValue("Monitoring", "djb.ums.was_mac_address", "")); + stdHeadVO.setFrst_trnm_ipad(getCurrentServerIp()); + stdHeadVO.setFrst_trnm_ipv4_addr(getCurrentServerIp()); + stdHeadVO.setFrst_trnm_mac(getCurrentServerMac()); stdHeadVO.setFrst_mesg_dman_dt(jsonData[0]); stdHeadVO.setFrst_mesg_dman_time(jsonData[1]); stdHeadVO.setFrst_trnm_sys_dvcd(SYS_DVCD);