diff --git a/src/main/java/com/eactive/eai/common/exception/ExceptionHandler.java b/src/main/java/com/eactive/eai/common/exception/ExceptionHandler.java index 27053fe..f9d48ae 100644 --- a/src/main/java/com/eactive/eai/common/exception/ExceptionHandler.java +++ b/src/main/java/com/eactive/eai/common/exception/ExceptionHandler.java @@ -791,7 +791,9 @@ public class ExceptionHandler { } resultEAIMessage.getMapper().setResponseType( resultEAIMessage.getStandardMessage(), STDMessageKeys.RESPONSE_TYPE_CODE_E); + resultEAIMessage.setOrgRspErrCd(resultEAIMessage.getRspErrCd()); resultEAIMessage.setRspErrCd(EAIMessageKeys.EAI_SUCCESS_CODE, false); + return resultEAIMessage; } } diff --git a/src/main/java/com/eactive/eai/common/logger/DBLogTransactionLogger.java b/src/main/java/com/eactive/eai/common/logger/DBLogTransactionLogger.java index 94a891a..76e7814 100644 --- a/src/main/java/com/eactive/eai/common/logger/DBLogTransactionLogger.java +++ b/src/main/java/com/eactive/eai/common/logger/DBLogTransactionLogger.java @@ -151,7 +151,7 @@ public class DBLogTransactionLogger implements TransactionLogger { // 템플릿만 남겨두고, 나머지는 사이트에 맞게 수정 필요함. //----------------------------------------------------> boolean itsmEnabled = false; - if((itsmEnabled) && !MessageUtil.checkRspErrCd(message.getRspErrCd())) { + if((itsmEnabled) && !MessageUtil.checkRspErrCd(message.getLogRspErrCd())) { if(logger.isDebug()) { logger.debug(guidLogPrefix + " ITSM Error Message Notify! "); } diff --git a/src/main/java/com/eactive/eai/common/logger/EAIFileLogger.java b/src/main/java/com/eactive/eai/common/logger/EAIFileLogger.java index e01f19a..e665082 100644 --- a/src/main/java/com/eactive/eai/common/logger/EAIFileLogger.java +++ b/src/main/java/com/eactive/eai/common/logger/EAIFileLogger.java @@ -276,6 +276,8 @@ public class EAIFileLogger String psvItfTp = svcMsg.getPsvItfTp(); // 수동 Syunc/Async int logPssSno = message.getLogPssSno(); String rspErrCd = message.getRspErrCd(); + // 내부오류 대체응답 시 원본 에러코드 기준으로 로깅한다. + String logRspErrCd = message.getLogRspErrCd(); // Duplication Error 방지를 위해 // 원 로그처리일련번호를 저장 : 2009.07.13 @@ -629,7 +631,7 @@ public class EAIFileLogger sb.appendAndDelimeter( NullControl.addSpace(message.getSngSysItfTp())); //기동시스템어댑터업무그룹명 sb.appendAndDelimeter( NullControl.addSpace(message.getLydMsgID())); //현재메시지ID명 - sb.appendAndDelimeter( NullControl.addSpace(message.getRspErrCd())); //응답에러코드명 + sb.appendAndDelimeter( NullControl.addSpace(logRspErrCd)); //응답에러코드명 sb.appendAndDelimeter( msgPssTm); //메시지처리시각 sb.appendAndDelimeter( String.valueOf(message.getSvrLogLvl())); //서버로그레벨번호 //index 20 @@ -715,8 +717,8 @@ public class EAIFileLogger sb.appendAndDelimeter( NullControl.addSpace(message.getRspnsChngMsgType())); // 응답변환유형 // log level 'E' or 'F' - if ("E".equals(message.getRspErrCd().substring(1, 2)) || "F".equals(message.getRspErrCd().substring(1, 2))) { - sb.appendAndDelimeter( NullControl.addSpace(message.getRspErrCd())); //EAI에러코드 + if ("E".equals(logRspErrCd.substring(1, 2)) || "F".equals(logRspErrCd.substring(1, 2))) { + sb.appendAndDelimeter( NullControl.addSpace(logRspErrCd)); //EAI에러코드 sb.appendAndDelimeter( StringUtil.chunkString(message.getRspErrMsg(),1000)); //EAI에러내용 } else { diff --git a/src/main/java/com/eactive/eai/common/logger/EAILogDAO.java b/src/main/java/com/eactive/eai/common/logger/EAILogDAO.java index a8c500d..6130554 100644 --- a/src/main/java/com/eactive/eai/common/logger/EAILogDAO.java +++ b/src/main/java/com/eactive/eai/common/logger/EAILogDAO.java @@ -220,6 +220,8 @@ public class EAILogDAO { String psvItfTp = svcMsg.getPsvItfTp(); // 수동 Syunc/Async int logPssSno = message.getLogPssSno(); String rspErrCd = message.getRspErrCd(); + // 내부오류 대체응답 시 원본 에러코드 기준으로 로깅한다. + String logRspErrCd = message.getLogRspErrCd(); // Duplication Error 방지를 위해 // 원 로그처리일련번호를 저장 : 2009.07.13 @@ -565,7 +567,7 @@ public class EAILogDAO { // 현재메시지ID명 eaiLog.setPrsntmsgidname(message.getLydMsgID()); // 응답에러코드명 - eaiLog.setRspnserrcdname(message.getRspErrCd()); + eaiLog.setRspnserrcdname(logRspErrCd); // 메시지처리시각 eaiLog.setMsgprcssyms(msgPssTm); // 서버로그레벨번호 @@ -659,10 +661,10 @@ public class EAILogDAO { eaiLog.setRspnschngmsgtype(message.getRspnsChngMsgType()); // log level 'E' or 'F' - if ("E".equals(message.getRspErrCd().substring(1, 2)) - || "F".equals(message.getRspErrCd().substring(1, 2))) { + if ("E".equals(logRspErrCd.substring(1, 2)) + || "F".equals(logRspErrCd.substring(1, 2))) { // EAI에러코드 - eaiLog.setEaierrcd(message.getRspErrCd()); + eaiLog.setEaierrcd(logRspErrCd); // EAI에러내용 eaiLog.setEaierrctnt(StringUtil.chunkString(message.getRspErrMsg(), 1000)); } @@ -724,11 +726,11 @@ public class EAILogDAO { } // 에러로그를 별도의 테이블에 저장하도록 한다. - if (!MessageUtil.checkRspErrCd(message.getRspErrCd())) { + if (!MessageUtil.checkRspErrCd(logRspErrCd)) { try { // 거래통제, 유량제어에 의한 에러는 저장하지 않도록 한다. - if (!(EAIMessageKeys.EAI_BLOCKED_CODE.equals(message.getRspErrCd()) - || EAIMessageKeys.EAI_INFLOW_BLOCKED_CODE.equals(message.getRspErrCd()))) { + if (!(EAIMessageKeys.EAI_BLOCKED_CODE.equals(logRspErrCd) + || EAIMessageKeys.EAI_INFLOW_BLOCKED_CODE.equals(logRspErrCd))) { addErrorLog(message); // 에러로그 } } catch (Exception ex) { @@ -741,6 +743,8 @@ public class EAILogDAO { public void addErrorLog(EAIMessage message) throws DAOException { try { String serverName = EAIServerManager.getInstance().getLocalServerName(); + // 내부오류 대체응답 시 원본 에러코드 기준으로 로깅한다. + String logRspErrCd = message.getLogRspErrCd(); EAIErrorLog eaiErrorLog = (EAIErrorLog) applicationContext.getBean(RollingTable.class, EAIErrorLog.class, message.getMsgRcvTm()); @@ -760,16 +764,16 @@ public class EAILogDAO { // EAI서비스명 eaiErrorLog.setEaisvcname(message.getEAISvcCd()); // 응답에러코드명 - eaiErrorLog.setRspnserrcdname(message.getRspErrCd()); + eaiErrorLog.setRspnserrcdname(logRspErrCd); // 기동시스템어댑터업무그룹명 eaiErrorLog.setGstatsysadptrbzwkgroupname(message.getSngSysItfTp()); // 수동시스템어댑터업무그룹명 eaiErrorLog.setPsvsysadptrbzwkgroupname(message.getCurrentSvcMsg().getPsvSysItfTp()); - if ("E".equals(message.getRspErrCd().substring(1, 2)) - || "F".equals(message.getRspErrCd().substring(1, 2))) { + if ("E".equals(logRspErrCd.substring(1, 2)) + || "F".equals(logRspErrCd.substring(1, 2))) { // EAI에러코드 - eaiErrorLog.setEaierrcd(message.getRspErrCd()); + eaiErrorLog.setEaierrcd(logRspErrCd); // EAI에러내용 eaiErrorLog.setEaierrctnt(StringUtil.chunkString(message.getRspErrMsg(), 500)); } diff --git a/src/main/java/com/eactive/eai/common/logger/EAILogSender.java b/src/main/java/com/eactive/eai/common/logger/EAILogSender.java index 60ee2de..440e14a 100644 --- a/src/main/java/com/eactive/eai/common/logger/EAILogSender.java +++ b/src/main/java/com/eactive/eai/common/logger/EAILogSender.java @@ -72,7 +72,7 @@ public class EAILogSender { } } else if(svcLogLvl == 1) { - isLogging = ! MessageUtil.checkRspErrCd(message.getRspErrCd()); + isLogging = ! MessageUtil.checkRspErrCd(message.getLogRspErrCd()); } else { isLogging = false; diff --git a/src/main/java/com/eactive/eai/common/message/EAIMessage.java b/src/main/java/com/eactive/eai/common/message/EAIMessage.java index 127621f..696e614 100644 --- a/src/main/java/com/eactive/eai/common/message/EAIMessage.java +++ b/src/main/java/com/eactive/eai/common/message/EAIMessage.java @@ -111,6 +111,8 @@ public class EAIMessage implements EAIMessageKeys, Serializable, Comparable(); @@ -673,6 +675,23 @@ public class EAIMessage implements EAIMessageKeys, Serializable, Comparable 0) ? orgRspErrCd : rspErrCd; + } /** * [비동기 전달 전용] 컨텍스트 전달용 Map 설정 diff --git a/src/main/java/com/eactive/eai/common/monitor/EAIServiceMonitor.java b/src/main/java/com/eactive/eai/common/monitor/EAIServiceMonitor.java index baa1c70..01ec1f0 100644 --- a/src/main/java/com/eactive/eai/common/monitor/EAIServiceMonitor.java +++ b/src/main/java/com/eactive/eai/common/monitor/EAIServiceMonitor.java @@ -292,7 +292,7 @@ public class EAIServiceMonitor implements Lifecycle { msgPssTm = msg.getMsgPssTm(); msgRcvTm = msg.getMsgRcvTm(); logPssSno = msg.getLogPssSno(); - rspErrCd = msg.getRspErrCd(); + rspErrCd = msg.getLogRspErrCd(); eaiSvcCd = msg.getEAISvcCd(); svcOgNo = msg.getSvcOgNo(); bwkCls = msg.getBwkCls(); diff --git a/src/main/java/com/eactive/eai/outbound/DefaultProcess.java b/src/main/java/com/eactive/eai/outbound/DefaultProcess.java index bcf7933..a372060 100644 --- a/src/main/java/com/eactive/eai/outbound/DefaultProcess.java +++ b/src/main/java/com/eactive/eai/outbound/DefaultProcess.java @@ -717,7 +717,8 @@ public abstract class DefaultProcess extends Process { return; } } - + this.resEaiMsg.setRspErr("RECEAIINA001", "비표준 오류 응답 수신"); + this.resEaiMsg.setOrgRspErrCd(this.resEaiMsg.getRspErrCd()); this.resEaiMsg.setRspErrCd(EAIMessageKeys.BWK_FAILMSG_CODE, false); } }