From 31146886bd12922d648f02c06568686155155e07 Mon Sep 17 00:00:00 2001 From: yunjy-hp Date: Thu, 8 Jan 2026 15:07:58 +0900 Subject: [PATCH] =?UTF-8?q?ElinkTransactionContext=EC=97=90=20=EC=B5=9C?= =?UTF-8?q?=EC=B4=88=EC=9A=94=EC=B2=AD=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=20=EB=B0=8F=20=EA=B0=80=EC=A0=B8=EB=8B=A4=20?= =?UTF-8?q?=EC=93=B0=EB=8A=94=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inbound/processor/RequestProcessor.java | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/eactive/eai/inbound/processor/RequestProcessor.java b/src/main/java/com/eactive/eai/inbound/processor/RequestProcessor.java index 66872e1..f2f06be 100644 --- a/src/main/java/com/eactive/eai/inbound/processor/RequestProcessor.java +++ b/src/main/java/com/eactive/eai/inbound/processor/RequestProcessor.java @@ -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,