feat: TxSiftContext 추가 및 HttpAdapterServiceSupport 적용

- TxSiftContext 클래스 추가: SIFT MDC 등록/해제 및 appender close 공통 처리
     - begin(): isSiftEnabled() 확인 후 MDC 등록, 이미 설정된 경우 스킵
     - end(): appender 즉시 close 후 MDC 제거 (UUID 등 1회성 key 용도)
   - HttpAdapterServiceSupport: MDC 직접 제어 코드를 TxSiftContext.begin/end로
교체
This commit is contained in:
curry772
2026-06-05 14:05:10 +09:00
parent d9ff1fa40b
commit 037fcd6302
2 changed files with 34 additions and 5 deletions
@@ -19,6 +19,7 @@ import com.eactive.eai.adapter.http.dynamic.filter.HttpAdapterFilterType;
import com.eactive.eai.adapter.http.dynamic.filter.JwtAuthException;
import com.eactive.eai.common.TransactionContextKeys;
import com.eactive.eai.common.util.Logger;
import com.eactive.eai.common.util.TxSiftContext;
import com.eactive.eai.common.util.UUIDGenerator;
public abstract class HttpAdapterServiceSupport implements HttpAdapterService, HttpAdapterServiceKey {
@@ -37,10 +38,7 @@ public abstract class HttpAdapterServiceSupport implements HttpAdapterService, H
prop.setProperty(TransactionContextKeys.TRANSACTION_UUID, uuid);
}
if(MDC.get(Logger.DISCRIMINATOR) == null) {
MDC.put(Logger.DISCRIMINATOR, uuid);
bMDCput = true;
}
bMDCput = TxSiftContext.begin(uuid);
try {
String transactionId = request.getHeader(HttpClientAdapterServiceKey.TRANSACTION_ID);
@@ -93,7 +91,7 @@ public abstract class HttpAdapterServiceSupport implements HttpAdapterService, H
}
} finally {
if(bMDCput)
MDC.remove(Logger.DISCRIMINATOR);
TxSiftContext.end();
}
}
@@ -0,0 +1,31 @@
package com.eactive.eai.common.util;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.MDC;
public class TxSiftContext {
/**
* 거래 시작 시 SIFT discriminator를 MDC에 등록한다.
* SIFT가 비활성화 상태이면 아무 작업도 하지 않는다.
*/
public static boolean begin(String discriminatingValue) {
if (!Logger.isSiftEnabled()) return false;
if(MDC.get(Logger.DISCRIMINATOR) == null) {
MDC.put(Logger.DISCRIMINATOR, discriminatingValue);
return true;
}
return false;
}
/**
* 거래 종료 시 MDC에 등록된 SIFT appender를 닫고 MDC를 정리한다.
* begin() 에서 MDC가 설정되지 않았으면 아무 작업도 하지 않는다.
*/
public static void end() {
String discriminatingValue = MDC.get(Logger.DISCRIMINATOR);
if (StringUtils.isBlank(discriminatingValue)) return;
Logger.closeSiftAppender(discriminatingValue);
MDC.remove(Logger.DISCRIMINATOR);
}
}