거래로그의 오류 출력 부분 수정
- 오류 발생 시 AdapterErrorMessageHandler가 처리하여도 400 오류로 출력되도록 수정 - 업무 오류 발생 시 AdapterErrorMessageHandler가 처리하여도 에러 RECEAIINA001 출력
This commit is contained in:
@@ -791,7 +791,9 @@ public class ExceptionHandler {
|
|||||||
}
|
}
|
||||||
resultEAIMessage.getMapper().setResponseType(
|
resultEAIMessage.getMapper().setResponseType(
|
||||||
resultEAIMessage.getStandardMessage(), STDMessageKeys.RESPONSE_TYPE_CODE_E);
|
resultEAIMessage.getStandardMessage(), STDMessageKeys.RESPONSE_TYPE_CODE_E);
|
||||||
|
resultEAIMessage.setOrgRspErrCd(resultEAIMessage.getRspErrCd());
|
||||||
resultEAIMessage.setRspErrCd(EAIMessageKeys.EAI_SUCCESS_CODE, false);
|
resultEAIMessage.setRspErrCd(EAIMessageKeys.EAI_SUCCESS_CODE, false);
|
||||||
|
|
||||||
return resultEAIMessage;
|
return resultEAIMessage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ public class DBLogTransactionLogger implements TransactionLogger {
|
|||||||
// 템플릿만 남겨두고, 나머지는 사이트에 맞게 수정 필요함.
|
// 템플릿만 남겨두고, 나머지는 사이트에 맞게 수정 필요함.
|
||||||
//---------------------------------------------------->
|
//---------------------------------------------------->
|
||||||
boolean itsmEnabled = false;
|
boolean itsmEnabled = false;
|
||||||
if((itsmEnabled) && !MessageUtil.checkRspErrCd(message.getRspErrCd())) {
|
if((itsmEnabled) && !MessageUtil.checkRspErrCd(message.getLogRspErrCd())) {
|
||||||
if(logger.isDebug()) {
|
if(logger.isDebug()) {
|
||||||
logger.debug(guidLogPrefix + " ITSM Error Message Notify! ");
|
logger.debug(guidLogPrefix + " ITSM Error Message Notify! ");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -276,6 +276,8 @@ public class EAIFileLogger
|
|||||||
String psvItfTp = svcMsg.getPsvItfTp(); // 수동 Syunc/Async
|
String psvItfTp = svcMsg.getPsvItfTp(); // 수동 Syunc/Async
|
||||||
int logPssSno = message.getLogPssSno();
|
int logPssSno = message.getLogPssSno();
|
||||||
String rspErrCd = message.getRspErrCd();
|
String rspErrCd = message.getRspErrCd();
|
||||||
|
// 내부오류 대체응답 시 원본 에러코드 기준으로 로깅한다.
|
||||||
|
String logRspErrCd = message.getLogRspErrCd();
|
||||||
|
|
||||||
// Duplication Error 방지를 위해
|
// Duplication Error 방지를 위해
|
||||||
// 원 로그처리일련번호를 저장 : 2009.07.13
|
// 원 로그처리일련번호를 저장 : 2009.07.13
|
||||||
@@ -629,7 +631,7 @@ public class EAIFileLogger
|
|||||||
|
|
||||||
sb.appendAndDelimeter( NullControl.addSpace(message.getSngSysItfTp())); //기동시스템어댑터업무그룹명
|
sb.appendAndDelimeter( NullControl.addSpace(message.getSngSysItfTp())); //기동시스템어댑터업무그룹명
|
||||||
sb.appendAndDelimeter( NullControl.addSpace(message.getLydMsgID())); //현재메시지ID명
|
sb.appendAndDelimeter( NullControl.addSpace(message.getLydMsgID())); //현재메시지ID명
|
||||||
sb.appendAndDelimeter( NullControl.addSpace(message.getRspErrCd())); //응답에러코드명
|
sb.appendAndDelimeter( NullControl.addSpace(logRspErrCd)); //응답에러코드명
|
||||||
sb.appendAndDelimeter( msgPssTm); //메시지처리시각
|
sb.appendAndDelimeter( msgPssTm); //메시지처리시각
|
||||||
sb.appendAndDelimeter( String.valueOf(message.getSvrLogLvl())); //서버로그레벨번호
|
sb.appendAndDelimeter( String.valueOf(message.getSvrLogLvl())); //서버로그레벨번호
|
||||||
//index 20
|
//index 20
|
||||||
@@ -715,8 +717,8 @@ public class EAIFileLogger
|
|||||||
sb.appendAndDelimeter( NullControl.addSpace(message.getRspnsChngMsgType())); // 응답변환유형
|
sb.appendAndDelimeter( NullControl.addSpace(message.getRspnsChngMsgType())); // 응답변환유형
|
||||||
|
|
||||||
// log level 'E' or 'F'
|
// 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))) {
|
||||||
sb.appendAndDelimeter( NullControl.addSpace(message.getRspErrCd())); //EAI에러코드
|
sb.appendAndDelimeter( NullControl.addSpace(logRspErrCd)); //EAI에러코드
|
||||||
sb.appendAndDelimeter( StringUtil.chunkString(message.getRspErrMsg(),1000)); //EAI에러내용
|
sb.appendAndDelimeter( StringUtil.chunkString(message.getRspErrMsg(),1000)); //EAI에러내용
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -220,6 +220,8 @@ public class EAILogDAO {
|
|||||||
String psvItfTp = svcMsg.getPsvItfTp(); // 수동 Syunc/Async
|
String psvItfTp = svcMsg.getPsvItfTp(); // 수동 Syunc/Async
|
||||||
int logPssSno = message.getLogPssSno();
|
int logPssSno = message.getLogPssSno();
|
||||||
String rspErrCd = message.getRspErrCd();
|
String rspErrCd = message.getRspErrCd();
|
||||||
|
// 내부오류 대체응답 시 원본 에러코드 기준으로 로깅한다.
|
||||||
|
String logRspErrCd = message.getLogRspErrCd();
|
||||||
|
|
||||||
// Duplication Error 방지를 위해
|
// Duplication Error 방지를 위해
|
||||||
// 원 로그처리일련번호를 저장 : 2009.07.13
|
// 원 로그처리일련번호를 저장 : 2009.07.13
|
||||||
@@ -565,7 +567,7 @@ public class EAILogDAO {
|
|||||||
// 현재메시지ID명
|
// 현재메시지ID명
|
||||||
eaiLog.setPrsntmsgidname(message.getLydMsgID());
|
eaiLog.setPrsntmsgidname(message.getLydMsgID());
|
||||||
// 응답에러코드명
|
// 응답에러코드명
|
||||||
eaiLog.setRspnserrcdname(message.getRspErrCd());
|
eaiLog.setRspnserrcdname(logRspErrCd);
|
||||||
// 메시지처리시각
|
// 메시지처리시각
|
||||||
eaiLog.setMsgprcssyms(msgPssTm);
|
eaiLog.setMsgprcssyms(msgPssTm);
|
||||||
// 서버로그레벨번호
|
// 서버로그레벨번호
|
||||||
@@ -659,10 +661,10 @@ public class EAILogDAO {
|
|||||||
eaiLog.setRspnschngmsgtype(message.getRspnsChngMsgType());
|
eaiLog.setRspnschngmsgtype(message.getRspnsChngMsgType());
|
||||||
|
|
||||||
// log level 'E' or 'F'
|
// log level 'E' or 'F'
|
||||||
if ("E".equals(message.getRspErrCd().substring(1, 2))
|
if ("E".equals(logRspErrCd.substring(1, 2))
|
||||||
|| "F".equals(message.getRspErrCd().substring(1, 2))) {
|
|| "F".equals(logRspErrCd.substring(1, 2))) {
|
||||||
// EAI에러코드
|
// EAI에러코드
|
||||||
eaiLog.setEaierrcd(message.getRspErrCd());
|
eaiLog.setEaierrcd(logRspErrCd);
|
||||||
// EAI에러내용
|
// EAI에러내용
|
||||||
eaiLog.setEaierrctnt(StringUtil.chunkString(message.getRspErrMsg(), 1000));
|
eaiLog.setEaierrctnt(StringUtil.chunkString(message.getRspErrMsg(), 1000));
|
||||||
}
|
}
|
||||||
@@ -724,11 +726,11 @@ public class EAILogDAO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 에러로그를 별도의 테이블에 저장하도록 한다.
|
// 에러로그를 별도의 테이블에 저장하도록 한다.
|
||||||
if (!MessageUtil.checkRspErrCd(message.getRspErrCd())) {
|
if (!MessageUtil.checkRspErrCd(logRspErrCd)) {
|
||||||
try {
|
try {
|
||||||
// 거래통제, 유량제어에 의한 에러는 저장하지 않도록 한다.
|
// 거래통제, 유량제어에 의한 에러는 저장하지 않도록 한다.
|
||||||
if (!(EAIMessageKeys.EAI_BLOCKED_CODE.equals(message.getRspErrCd())
|
if (!(EAIMessageKeys.EAI_BLOCKED_CODE.equals(logRspErrCd)
|
||||||
|| EAIMessageKeys.EAI_INFLOW_BLOCKED_CODE.equals(message.getRspErrCd()))) {
|
|| EAIMessageKeys.EAI_INFLOW_BLOCKED_CODE.equals(logRspErrCd))) {
|
||||||
addErrorLog(message); // 에러로그
|
addErrorLog(message); // 에러로그
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@@ -741,6 +743,8 @@ public class EAILogDAO {
|
|||||||
public void addErrorLog(EAIMessage message) throws DAOException {
|
public void addErrorLog(EAIMessage message) throws DAOException {
|
||||||
try {
|
try {
|
||||||
String serverName = EAIServerManager.getInstance().getLocalServerName();
|
String serverName = EAIServerManager.getInstance().getLocalServerName();
|
||||||
|
// 내부오류 대체응답 시 원본 에러코드 기준으로 로깅한다.
|
||||||
|
String logRspErrCd = message.getLogRspErrCd();
|
||||||
|
|
||||||
EAIErrorLog eaiErrorLog = (EAIErrorLog) applicationContext.getBean(RollingTable.class, EAIErrorLog.class,
|
EAIErrorLog eaiErrorLog = (EAIErrorLog) applicationContext.getBean(RollingTable.class, EAIErrorLog.class,
|
||||||
message.getMsgRcvTm());
|
message.getMsgRcvTm());
|
||||||
@@ -760,16 +764,16 @@ public class EAILogDAO {
|
|||||||
// EAI서비스명
|
// EAI서비스명
|
||||||
eaiErrorLog.setEaisvcname(message.getEAISvcCd());
|
eaiErrorLog.setEaisvcname(message.getEAISvcCd());
|
||||||
// 응답에러코드명
|
// 응답에러코드명
|
||||||
eaiErrorLog.setRspnserrcdname(message.getRspErrCd());
|
eaiErrorLog.setRspnserrcdname(logRspErrCd);
|
||||||
// 기동시스템어댑터업무그룹명
|
// 기동시스템어댑터업무그룹명
|
||||||
eaiErrorLog.setGstatsysadptrbzwkgroupname(message.getSngSysItfTp());
|
eaiErrorLog.setGstatsysadptrbzwkgroupname(message.getSngSysItfTp());
|
||||||
// 수동시스템어댑터업무그룹명
|
// 수동시스템어댑터업무그룹명
|
||||||
eaiErrorLog.setPsvsysadptrbzwkgroupname(message.getCurrentSvcMsg().getPsvSysItfTp());
|
eaiErrorLog.setPsvsysadptrbzwkgroupname(message.getCurrentSvcMsg().getPsvSysItfTp());
|
||||||
|
|
||||||
if ("E".equals(message.getRspErrCd().substring(1, 2))
|
if ("E".equals(logRspErrCd.substring(1, 2))
|
||||||
|| "F".equals(message.getRspErrCd().substring(1, 2))) {
|
|| "F".equals(logRspErrCd.substring(1, 2))) {
|
||||||
// EAI에러코드
|
// EAI에러코드
|
||||||
eaiErrorLog.setEaierrcd(message.getRspErrCd());
|
eaiErrorLog.setEaierrcd(logRspErrCd);
|
||||||
// EAI에러내용
|
// EAI에러내용
|
||||||
eaiErrorLog.setEaierrctnt(StringUtil.chunkString(message.getRspErrMsg(), 500));
|
eaiErrorLog.setEaierrctnt(StringUtil.chunkString(message.getRspErrMsg(), 500));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ public class EAILogSender {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(svcLogLvl == 1) {
|
else if(svcLogLvl == 1) {
|
||||||
isLogging = ! MessageUtil.checkRspErrCd(message.getRspErrCd());
|
isLogging = ! MessageUtil.checkRspErrCd(message.getLogRspErrCd());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
isLogging = false;
|
isLogging = false;
|
||||||
|
|||||||
@@ -111,6 +111,8 @@ public class EAIMessage implements EAIMessageKeys, Serializable, Comparable<EAIM
|
|||||||
private String authCheckdYn;
|
private String authCheckdYn;
|
||||||
|
|
||||||
private Properties callProp;
|
private Properties callProp;
|
||||||
|
|
||||||
|
private String orgRspErrCd;
|
||||||
|
|
||||||
public EAIMessage() {
|
public EAIMessage() {
|
||||||
this.svcMsgs = new ArrayList<>();
|
this.svcMsgs = new ArrayList<>();
|
||||||
@@ -673,6 +675,23 @@ public class EAIMessage implements EAIMessageKeys, Serializable, Comparable<EAIM
|
|||||||
public void setCallProp(Properties callProp) {
|
public void setCallProp(Properties callProp) {
|
||||||
this.callProp = callProp;
|
this.callProp = callProp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getOrgRspErrCd() {
|
||||||
|
return orgRspErrCd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOrgRspErrCd(String orgRspErrCd) {
|
||||||
|
this.orgRspErrCd = orgRspErrCd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 로깅/모니터링용 응답에러코드를 반환한다.
|
||||||
|
* 내부오류를 어댑터 에러메시지 핸들러로 대체 응답한 경우
|
||||||
|
* rspErrCd 에는 정상코드가 설정되므로 원본 에러코드(orgRspErrCd)를 우선한다.
|
||||||
|
*/
|
||||||
|
public String getLogRspErrCd() {
|
||||||
|
return (orgRspErrCd != null && orgRspErrCd.length() > 0) ? orgRspErrCd : rspErrCd;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [비동기 전달 전용] 컨텍스트 전달용 Map 설정
|
* [비동기 전달 전용] 컨텍스트 전달용 Map 설정
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ public class EAIServiceMonitor implements Lifecycle {
|
|||||||
msgPssTm = msg.getMsgPssTm();
|
msgPssTm = msg.getMsgPssTm();
|
||||||
msgRcvTm = msg.getMsgRcvTm();
|
msgRcvTm = msg.getMsgRcvTm();
|
||||||
logPssSno = msg.getLogPssSno();
|
logPssSno = msg.getLogPssSno();
|
||||||
rspErrCd = msg.getRspErrCd();
|
rspErrCd = msg.getLogRspErrCd();
|
||||||
eaiSvcCd = msg.getEAISvcCd();
|
eaiSvcCd = msg.getEAISvcCd();
|
||||||
svcOgNo = msg.getSvcOgNo();
|
svcOgNo = msg.getSvcOgNo();
|
||||||
bwkCls = msg.getBwkCls();
|
bwkCls = msg.getBwkCls();
|
||||||
|
|||||||
@@ -717,7 +717,8 @@ public abstract class DefaultProcess extends Process {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.resEaiMsg.setRspErr("RECEAIINA001", "비표준 오류 응답 수신");
|
||||||
|
this.resEaiMsg.setOrgRspErrCd(this.resEaiMsg.getRspErrCd());
|
||||||
this.resEaiMsg.setRspErrCd(EAIMessageKeys.BWK_FAILMSG_CODE, false);
|
this.resEaiMsg.setRspErrCd(EAIMessageKeys.BWK_FAILMSG_CODE, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user