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