diff --git a/sql/adb/25_agent_ords_security_backoffice_support.sql b/sql/adb/25_agent_ords_security_backoffice_support.sql index 216ce28..5407054 100644 --- a/sql/adb/25_agent_ords_security_backoffice_support.sql +++ b/sql/adb/25_agent_ords_security_backoffice_support.sql @@ -111,7 +111,7 @@ USING ( SELECT 1 AS object_id, 'ADMIN' AS owner, 'CB_V_SEARCH_DOCUMENTS' AS object_name, - 'cb-agent-security/vpd/documents' AS ords_path, + 'cb-ords/cb-agent-security/vpd/documents' AS ords_path, 'Y' AS enabled_yn FROM dual ) src diff --git a/src/main/java/com/cloudhandson/vpdbackoffice/domain/probe/ProbeStatus.java b/src/main/java/com/cloudhandson/vpdbackoffice/domain/probe/ProbeStatus.java index 287c8a5..b081591 100644 --- a/src/main/java/com/cloudhandson/vpdbackoffice/domain/probe/ProbeStatus.java +++ b/src/main/java/com/cloudhandson/vpdbackoffice/domain/probe/ProbeStatus.java @@ -8,6 +8,7 @@ public enum ProbeStatus { OBJECT_DISABLED, INVALID_TOKEN, OBJECT_NOT_ACCESSIBLE, + ORDS_PATH_NOT_FOUND, ORDS_NOT_CONFIGURED, ORDS_UNAVAILABLE, ORDS_TIMEOUT, diff --git a/src/main/java/com/cloudhandson/vpdbackoffice/service/OrdsProbeService.java b/src/main/java/com/cloudhandson/vpdbackoffice/service/OrdsProbeService.java index af26bd5..2ea6030 100644 --- a/src/main/java/com/cloudhandson/vpdbackoffice/service/OrdsProbeService.java +++ b/src/main/java/com/cloudhandson/vpdbackoffice/service/OrdsProbeService.java @@ -121,7 +121,7 @@ public class OrdsProbeService { return auditAndReturn(command, ProbeResult.blocked( status, status.name(), - trimMessage(e.getResponseBodyAsString()), + httpErrorMessage(status, e.getResponseBodyAsString()), requestHeaders, requestPayload, prettyHeaders(e.getResponseHeaders()), @@ -260,6 +260,15 @@ public class OrdsProbeService { return detail; } + private String httpErrorMessage(ProbeStatus status, String body) { + String detail = trimMessage(body); + if (status == ProbeStatus.ORDS_PATH_NOT_FOUND) { + return "ORDS 경로를 찾을 수 없습니다. 설정의 Base URL과 보호 객체 ORDS Path가 실제 ORDS schema mapping/module/template 경로와 일치하는지 확인하세요. 상세: " + + detail; + } + return detail; + } + private String trimMessage(String body) { if (body == null) { return null; diff --git a/src/main/java/com/cloudhandson/vpdbackoffice/service/ProbeErrorClassifier.java b/src/main/java/com/cloudhandson/vpdbackoffice/service/ProbeErrorClassifier.java index e700111..7b44d7c 100644 --- a/src/main/java/com/cloudhandson/vpdbackoffice/service/ProbeErrorClassifier.java +++ b/src/main/java/com/cloudhandson/vpdbackoffice/service/ProbeErrorClassifier.java @@ -23,6 +23,12 @@ public class ProbeErrorClassifier { if (status != null && (status.value() == 401 || status.value() == 403)) { return ProbeStatus.INVALID_TOKEN; } + if (status != null && status.value() == 404) { + return ProbeStatus.ORDS_PATH_NOT_FOUND; + } + if (text.contains("\"code\"") && text.contains("NotFound")) { + return ProbeStatus.ORDS_PATH_NOT_FOUND; + } return ProbeStatus.UNKNOWN_ERROR; } diff --git a/src/main/resources/templates/objects.html b/src/main/resources/templates/objects.html index eeebc80..1f40dc8 100644 --- a/src/main/resources/templates/objects.html +++ b/src/main/resources/templates/objects.html @@ -25,7 +25,7 @@