From 0e3a612bc0c3a3327a44c32064d3b75df81c3f7a Mon Sep 17 00:00:00 2001 From: curry772 Date: Tue, 9 Jun 2026 13:49:32 +0900 Subject: [PATCH] =?UTF-8?q?TemplateAdapterErrorMsgHandler=20=EB=A5=BC=20?= =?UTF-8?q?=EC=9D=B4=EC=9A=A9=ED=95=98=EC=97=AC=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=83=9D=EC=84=B1=ED=95=A0=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DJErpApiAdapterController.java | 46 +++++--- .../adapter/handler/LonErrorMsgHandler.java | 104 +++++++++--------- 2 files changed, 83 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/eactive/eai/adapter/controller/DJErpApiAdapterController.java b/src/main/java/com/eactive/eai/adapter/controller/DJErpApiAdapterController.java index 616d4b1..f02e63c 100644 --- a/src/main/java/com/eactive/eai/adapter/controller/DJErpApiAdapterController.java +++ b/src/main/java/com/eactive/eai/adapter/controller/DJErpApiAdapterController.java @@ -19,6 +19,8 @@ import com.eactive.eai.adapter.AdapterGroupVO; import com.eactive.eai.adapter.AdapterManager; import com.eactive.eai.adapter.AdapterPropManager; import com.eactive.eai.adapter.AdapterVO; +import com.eactive.eai.adapter.handler.AdapterErrorMessageHandler; +import com.eactive.eai.adapter.handler.AdapterErrorMessageHandlerFactory; import com.eactive.eai.adapter.http.HttpStatusException; import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey; import com.eactive.eai.adapter.http.dynamic.HttpDynamicInAdapterManager; @@ -132,27 +134,18 @@ public class DJErpApiAdapterController implements HttpAdapterServiceKey { String errorMsg = null; - if(e instanceof HttpStatusException ) { + errorMsg = genErrorResponseMessage(adapterGroupName, adapterName, + transactionProp, e, adptMsgType, encode, errorResponseFormat); + if (e instanceof HttpStatusException) { logger.warn("ApiAdapterController] " + adapterGroupName + "-" + adapterName + ">>" + e.getMessage()); HttpStatusException e1 = (HttpStatusException) e; - errorMsg = MessageUtil.makeErrorMessageByMessageType(adptMsgType, encode, - MessageUtil.ERROR_CODE_AP_ERROR, e1.getMessage(), errorResponseFormat); responseEntity = ResponseEntity.status(e1.getStatus()).contentType(mediaType).body(errorMsg); - } - else if( e instanceof JwtAuthException ) - { + } else if (e instanceof JwtAuthException) { logger.error(adapterGroupName + "-" + adapterName + ">>" + e.getMessage(), e); - errorMsg = MessageUtil.makeErrorMessageByMessageType(adptMsgType, encode, - MessageUtil.ERROR_CODE_AUTH_FAIL, e.getMessage(), errorResponseFormat); responseEntity = ResponseEntity.status(HttpStatus.UNAUTHORIZED).contentType(mediaType).body(errorMsg); - } - else - { + } else { logger.error(adapterGroupName + "-" + adapterName + ">>" + e.getMessage(), e); - errorMsg = MessageUtil.makeErrorMessageByMessageType(adptMsgType, encode, - MessageUtil.ERROR_CODE_AP_ERROR, e.getMessage(), errorResponseFormat); - responseEntity = ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).contentType(mediaType) - .body(errorMsg); + responseEntity = ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).contentType(mediaType).body(errorMsg); } responseData = errorMsg; @@ -172,6 +165,29 @@ public class DJErpApiAdapterController implements HttpAdapterServiceKey { } return responseEntity; } + + private String genErrorResponseMessage(String adapterGroupName, String adapterName, + Properties callProp, Throwable e, String adptMsgType, String encode, String errorResponseFormat) { + String errorHandlerClass = AdapterPropManager.getInstance().getProperty(adapterName, "ERR_MSG_HANDLER"); + if (StringUtils.isNotBlank(errorHandlerClass)) { + if (logger.isInfo()) + logger.info("ExceptionHandler] errorSyncSend ERR_MSG_HANDLER=" + errorHandlerClass); + AdapterErrorMessageHandler handler = AdapterErrorMessageHandlerFactory.createHandler(errorHandlerClass); + if (handler != null) { + Object resposne; + try { + resposne = handler.generateNonStandardInboundErrorResponseMessage(adapterGroupName, adapterName, + callProp, null, null, e); + return (String)resposne; + } catch (Exception e1) { + logger.warn("AdapterErrorMessageHandler error.", e); + // handler 실패시 아래에서 처리한 + } + } + } + return MessageUtil.makeErrorMessageByMessageType(adptMsgType, encode, + MessageUtil.ERROR_CODE_AP_ERROR, e.getMessage(), errorResponseFormat); + } /** * url에서 뒤쪽 /이후를 제거하면서 찾는다.
diff --git a/src/main/java/com/eactive/eai/custom/adapter/handler/LonErrorMsgHandler.java b/src/main/java/com/eactive/eai/custom/adapter/handler/LonErrorMsgHandler.java index dec7f0c..2fee9d6 100644 --- a/src/main/java/com/eactive/eai/custom/adapter/handler/LonErrorMsgHandler.java +++ b/src/main/java/com/eactive/eai/custom/adapter/handler/LonErrorMsgHandler.java @@ -1,52 +1,52 @@ -package com.eactive.eai.custom.adapter.handler; - -import java.util.Properties; - -import com.eactive.eai.adapter.AdapterGroupVO; -import com.eactive.eai.adapter.AdapterManager; -import com.eactive.eai.adapter.handler.AdapterErrorMessageHandler; -import com.eactive.eai.common.message.MessageType; -import com.eactive.eai.message.StandardMessage; -import com.eactive.eai.message.manager.StandardMessageManager; -import com.eactive.eai.message.service.InterfaceMapper; -import com.ext.eai.common.stdmessage.STDMessageKeys; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -public class LonErrorMsgHandler implements AdapterErrorMessageHandler { - - @Override - public Object generateNonStandardErrorResponseMessage(String inboudnAdapterGroupName, String inboudnAdapterName, - Properties callProp, Object outboundRequestData, StandardMessage resStandardMessage) throws Exception{ - - if(resStandardMessage != null && isErrorMessage(resStandardMessage)) { - AdapterGroupVO adapterGroupVO = AdapterManager.getInstance().getAdapterGroupVO(inboudnAdapterGroupName); - if(MessageType.JSON.equals(adapterGroupVO.getMessageType())) { - ObjectMapper objectMapper = new ObjectMapper(); - String requestMessage = (String) outboundRequestData; - JsonNode requestJson = objectMapper.readTree(requestMessage); - String alncInstCd = requestJson.get("dataCmn").get("alncInstCd").asText(); - - ObjectNode responseJson = objectMapper.createObjectNode(); - ObjectNode dataCmnNode = objectMapper.createObjectNode(); - responseJson.set("dataCmn", dataCmnNode); - dataCmnNode.put("fnclInstCd", "KBK"); - dataCmnNode.put("alncInstCd", alncInstCd); - dataCmnNode.put("tlgrRspnsCd", "0210"); - - return responseJson.toString(); - } - } - - - return ""; - } - - private boolean isErrorMessage(StandardMessage standardMessage) { - InterfaceMapper mapper = StandardMessageManager.getInstance().getMapper(); - String responseType = mapper.getResponseType(standardMessage); - return STDMessageKeys.RESPONSE_TYPE_CODE_E.equals(responseType); - } - -} +//package com.eactive.eai.custom.adapter.handler; +// +//import java.util.Properties; +// +//import com.eactive.eai.adapter.AdapterGroupVO; +//import com.eactive.eai.adapter.AdapterManager; +//import com.eactive.eai.adapter.handler.AdapterErrorMessageHandler; +//import com.eactive.eai.common.message.MessageType; +//import com.eactive.eai.message.StandardMessage; +//import com.eactive.eai.message.manager.StandardMessageManager; +//import com.eactive.eai.message.service.InterfaceMapper; +//import com.ext.eai.common.stdmessage.STDMessageKeys; +//import com.fasterxml.jackson.databind.JsonNode; +//import com.fasterxml.jackson.databind.ObjectMapper; +//import com.fasterxml.jackson.databind.node.ObjectNode; +// +//public class LonErrorMsgHandler implements AdapterErrorMessageHandler { +// +// @Override +// public Object generateNonStandardErrorResponseMessage(String inboudnAdapterGroupName, String inboudnAdapterName, +// Properties callProp, Object outboundRequestData, StandardMessage resStandardMessage) throws Exception{ +// +// if(resStandardMessage != null && isErrorMessage(resStandardMessage)) { +// AdapterGroupVO adapterGroupVO = AdapterManager.getInstance().getAdapterGroupVO(inboudnAdapterGroupName); +// if(MessageType.JSON.equals(adapterGroupVO.getMessageType())) { +// ObjectMapper objectMapper = new ObjectMapper(); +// String requestMessage = (String) outboundRequestData; +// JsonNode requestJson = objectMapper.readTree(requestMessage); +// String alncInstCd = requestJson.get("dataCmn").get("alncInstCd").asText(); +// +// ObjectNode responseJson = objectMapper.createObjectNode(); +// ObjectNode dataCmnNode = objectMapper.createObjectNode(); +// responseJson.set("dataCmn", dataCmnNode); +// dataCmnNode.put("fnclInstCd", "KBK"); +// dataCmnNode.put("alncInstCd", alncInstCd); +// dataCmnNode.put("tlgrRspnsCd", "0210"); +// +// return responseJson.toString(); +// } +// } +// +// +// return ""; +// } +// +// private boolean isErrorMessage(StandardMessage standardMessage) { +// InterfaceMapper mapper = StandardMessageManager.getInstance().getMapper(); +// String responseType = mapper.getResponseType(standardMessage); +// return STDMessageKeys.RESPONSE_TYPE_CODE_E.equals(responseType); +// } +// +//}