ElinkTransactionContext에 최초요청데이터 저장 및 가져다 쓰는 함수 추가

This commit is contained in:
yunjy-hp
2026-01-08 15:07:58 +09:00
parent 7d5fb8afe4
commit 31146886bd
@@ -5,6 +5,7 @@ import java.util.Properties;
import java.util.Set;
import com.eactive.eai.common.TransactionContextKeys;
import com.eactive.eai.common.context.ElinkTransactionContext;
import com.eactive.eai.common.util.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpStatus;
@@ -59,7 +60,7 @@ import org.json.simple.JSONObject;
import java.util.HashMap;
import java.util.Map;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.http.HttpStatus;
//import org.springframework.http.HttpStatus;
//import java.util.Calendar;
//import java.util.Properties;
@@ -75,7 +76,7 @@ import java.util.Map;
* - 응답 거래로깅
* 3. 주의사항
*
* @author :
* @author :
* @version : v 1.0.0
* @see :
* @since :
@@ -176,7 +177,7 @@ public class RequestProcessor extends RequestProcessorSupport {
* @param prop 호출시 전달할 Property 값(추후 확장을 위해)
* @param msgRcvTm 메시지 수신시각
* @return Object
* @throws Exception
* @throws Exception
**/
protected Object hookup(Object message, Properties prop, long msgRcvTm) throws Exception {
EAIMessage retEaiMsg = null;
@@ -184,7 +185,7 @@ public class RequestProcessor extends RequestProcessorSupport {
ProcessVO vo = setVO(prop, msgRcvTm);
prop.setProperty(TransactionContextKeys.TRANSACTION_UUID, vo.getUuid());
String inboundCharset = prop.getProperty(Keys.CHARSET_KEY_IN);
String inboundCharset = prop.getProperty(Keys.CHARSET_KEY_IN);
// Unknown Message 로깅시 표준메시지일 경우 원본 자체를 남기기 위해 변수로 저장한다.
// logUnknownMessage 호출시 사용하도록 함
@@ -199,7 +200,7 @@ public class RequestProcessor extends RequestProcessorSupport {
} catch (Exception e1) {
logger.error("deep copy error : " + e1.getMessage(), e1);
}
// 2. StandardMessage 생성
EAIServerManager eaiServerManager = EAIServerManager.getInstance();
StandardMessage standardMessage = null;
@@ -207,17 +208,17 @@ public class RequestProcessor extends RequestProcessorSupport {
StandardReader reader = null;
InterfaceMapper mapper = standardManager.getMapper();
StandardMessage subMessage = null;
if(Keys.IF_STANDARD.equals(vo.getStdMsgTypeCode())) {
if (logger.isDebug()) logger.debug("RequestProcessor] Get Message from INPUT MESSAGE");
try {
standardMessage = standardManager.getStandardMessage();
reader = standardManager.getReader(vo.getAdptrMsgType());
standardMessage = standardManager.getStandardMessage();
reader = standardManager.getReader(vo.getAdptrMsgType());
reader.parse(standardMessage, message);
// 표준전문 파싱 후 어댑터의 charset을 설정한다.
standardMessage.setBizDataCharset(inboundCharset);
standardManager.getMessageCoordinator().coordinateAfterParsing(standardMessage, vo, prop);
} catch(Exception e) {
vo.setRspErrorCode("RECEAIIRP008");
vo.setRspErrorMsg(ExceptionUtil.make(e, vo.getRspErrorCode(), new String[]{ e.getMessage()}));
@@ -226,7 +227,7 @@ public class RequestProcessor extends RequestProcessorSupport {
logUnknownMessage(vo,orgMessage);
throw new RequestProcessorException(vo.getRspErrorMsg());
}
}
}
else {
try {
if(eaiServerManager.isTASEnabledEAIServer() && Keys.TESTMASTER_TAS.equals(vo.getTestMasterYn())) { //비표준 시뮬레이터
@@ -269,7 +270,7 @@ public class RequestProcessor extends RequestProcessorSupport {
else {
throw ex;
}
}
}
} else {
if (logger.isInfo()) logger.info("RequestProcessor] The RequestAction is null in Adapter properties. - "+vo.getAdapterName());
}
@@ -290,7 +291,7 @@ public class RequestProcessor extends RequestProcessorSupport {
}
}
}
if(Keys.IF_SUBSTANDARD.equals(vo.getStdMsgTypeCode())) {
if (logger.isDebug()) logger.debug("RequestProcessor] Mapping StandardMessage from INPUT MESSAGE - SUBSTANDARD");
try {
@@ -301,7 +302,7 @@ public class RequestProcessor extends RequestProcessorSupport {
subMessage = versionMapper.parseSub(vo.getAdptrMsgType(), message);
subMessage.setBizDataCharset(inboundCharset);
standardMessage = versionMapper.mapFromSub(subMessage, standardMessage);
// 변경된 값이 있을 수 있으므로 재처리.
standardManager.getMessageCoordinator().coordinateAfterParsing(standardMessage, vo, prop);
if(logger.isDebug() && standardMessage !=null) {
@@ -350,9 +351,9 @@ public class RequestProcessor extends RequestProcessorSupport {
String guid = mapper.getGuid(standardMessage);
String guidSeq = mapper.getGuidSeq(standardMessage);
String returnType = mapper.getSendRecvDivision(standardMessage); // S|R
String receivedBizData = standardMessage.getBizData();
vo.setEaiSvcCd(eaiSvcCd);
if (StringUtils.isBlank(eaiSvcCd)) {
vo.setRspErrorCode("RECEAIIRP009");
@@ -383,7 +384,7 @@ public class RequestProcessor extends RequestProcessorSupport {
return getInboundErrorResponse(prop, standardMessage, mapper, vo.getRspErrorCode(), vo.getRspErrorMsg(), inboundCharset);
}
}
// 채널분류코드별로 GUID 중복체크
if (eaiServerManager.isMCI() && STDMessageKeys.SEND_RECV_CD_SEND.equals(mapper.getSendRecvDivision(standardMessage))
&& PropManager.getInstance().isContainProperties("DUPLICATION_GUID") ) {
@@ -414,7 +415,11 @@ public class RequestProcessor extends RequestProcessorSupport {
}
}
prop.setProperty(TransactionContextKeys.GUID, guid);
// INBOUND MESSAGE 스레드 로컬에 저장
String bizData = standardMessage.getBizData();
ElinkTransactionContext.setRequestBizData(bizData);
// INBOUND_HEADER 가 NULL인 경우는 HTTP가 아닌것으로 간주함.
if(prop.get(HttpClientAdapterServiceKey.INBOUND_HEADER) != null) {
HttpAdapterExtraLogUtil.insertHttpAdapterExtraLog(vo.getUuid(), 100,