From a14dda8188f42a306e85b173ad203495602c6f8a Mon Sep 17 00:00:00 2001 From: daekuk1 Date: Tue, 3 Feb 2026 11:21:48 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=ED=95=9C=EA=B8=80=20=EC=9D=B8=EC=BD=94?= =?UTF-8?q?=EB=94=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../onl/manage/rule/layoutsync/LayoutSyncController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java index 0fb52f6..987dcb7 100644 --- a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java +++ b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java @@ -438,19 +438,19 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements resultSet = sis.readLine(arg, total, 1024); } - param.put("recvData", new String(arg, "UTF-8")); + param.put("recvData", new String(arg)); } catch(Exception e) { logger.error("MessageSync.err - don't read the XML File - " + new String(arg), e); param.put("recvData", ""); } // byte[]로부터 XML 파싱 (BOM 제거) - String xmlContent = new String(arg, "UTF-8").trim(); + String xmlContent = new String(arg).trim(); // BOM 제거 (UTF-8 BOM: EF BB BF) if (xmlContent.startsWith("\uFEFF")) { xmlContent = xmlContent.substring(1); } - Document doc = builder.build(new ByteArrayInputStream(xmlContent.getBytes("UTF-8"))); + Document doc = builder.build(new ByteArrayInputStream(xmlContent.getBytes())); param.put("logPrcssSeqno", UUIDGenerator.getUUID()); // xml 1.1 From 6558d21bb06933f4a97bc5acb2d34ee34d631ca8 Mon Sep 17 00:00:00 2001 From: daekuk1 Date: Tue, 3 Feb 2026 16:17:45 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=ED=95=9C=EA=B8=80=20=EC=9D=B8=EC=BD=94?= =?UTF-8?q?=EB=94=A9=20=EC=98=A4=EB=A5=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/layoutsync/LayoutSyncController.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java index 987dcb7..fa7df09 100644 --- a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java +++ b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java @@ -438,6 +438,23 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements resultSet = sis.readLine(arg, total, 1024); } + // ===== 인코딩 확인 로그 시작 ===== + logger.info("========== 인코딩 디버깅 정보 =========="); + logger.info("request.getCharacterEncoding(): " + request.getCharacterEncoding()); + logger.info("request.getContentType(): " + request.getContentType()); + logger.info("Content Length: " + arg.length + " bytes"); + + // 다양한 인코딩으로 읽어보기 + String asDefaultEncoding = new String(arg); + String asUtf8 = new String(arg, "UTF-8"); + String asEucKr = new String(arg, "EUC-KR"); + + logger.info("Default Encoding 전체 내용:\n" + asDefaultEncoding); + logger.info("UTF-8 전체 내용:\n" + asUtf8); + logger.info("EUC-KR 전체 내용:\n" + asEucKr); + logger.info("========================================"); + // ===== 인코딩 확인 로그 끝 ===== + param.put("recvData", new String(arg)); } catch(Exception e) { logger.error("MessageSync.err - don't read the XML File - " + new String(arg), e); From 2fdf8bedd4994154854dc1f995fdc06eb14776c8 Mon Sep 17 00:00:00 2001 From: daekuk1 Date: Tue, 3 Feb 2026 16:45:28 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=ED=95=9C=EA=B8=80=20=EC=9D=B8=EC=BD=94?= =?UTF-8?q?=EB=94=A9=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/layoutsync/LayoutSyncController.java | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java index fa7df09..dfbf837 100644 --- a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java +++ b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java @@ -455,19 +455,19 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements logger.info("========================================"); // ===== 인코딩 확인 로그 끝 ===== - param.put("recvData", new String(arg)); + param.put("recvData", new String(arg, "EUC-KR")); } catch(Exception e) { - logger.error("MessageSync.err - don't read the XML File - " + new String(arg), e); + logger.error("MessageSync.err - don't read the XML File - " + new String(arg, "EUC-KR"), e); param.put("recvData", ""); } - // byte[]로부터 XML 파싱 (BOM 제거) - String xmlContent = new String(arg).trim(); + // byte[]로부터 XML 파싱 (BOM 제거) - EUC-KR로 읽기 + String xmlContent = new String(arg, "EUC-KR").trim(); // BOM 제거 (UTF-8 BOM: EF BB BF) if (xmlContent.startsWith("\uFEFF")) { xmlContent = xmlContent.substring(1); } - Document doc = builder.build(new ByteArrayInputStream(xmlContent.getBytes())); + Document doc = builder.build(new ByteArrayInputStream(xmlContent.getBytes("EUC-KR"))); param.put("logPrcssSeqno", UUIDGenerator.getUUID()); // xml 1.1 @@ -624,10 +624,11 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements ServletOutputStream sos = null; try { + response.setContentType("application/xml; charset=EUC-KR"); sos = response.getOutputStream(); - sos.write(resultS.getBytes()); + sos.write(resultS.getBytes("EUC-KR")); } catch( Exception e ) { - e.printStackTrace(); + e.printStackTrace(); } finally { if( sis != null ) sis.close(); if( sos != null ) sos.close(); @@ -661,16 +662,16 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements // 초기화 DataSourceContextHolder.setDataSourceType(DataSourceTypeManager.getDataSourceType(schema)); - try { + try { // // 요청 전문 - sis = request.getInputStream(); - - JSONObject json = (JSONObject) JSONValue.parse(new InputStreamReader(sis)); + sis = request.getInputStream(); + + JSONObject json = (JSONObject) JSONValue.parse(new InputStreamReader(sis, "EUC-KR")); // JJB 향후제거 shkim 2020-05-13 연계 테스트 체크 logger.error("\n\n MMI SYNC Request : " + json.toString()); - // log 기록 + // log 기록 byte[] arg = new byte[request.getContentLength()]; int resultSet =0; int total = 0; @@ -680,10 +681,10 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements total += resultSet; resultSet = sis.readLine(arg, total, 1024); } - - param.put("recvData", new String(arg)); + + param.put("recvData", new String(arg, "EUC-KR")); } catch(Exception e) { - logger.error("MessageSync.err - don't read the JSON File - " + new String(arg), e); + logger.error("MessageSync.err - don't read the JSON File - " + new String(arg, "EUC-KR"), e); param.put("recvData", ""); } @@ -724,10 +725,11 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements ServletOutputStream sos = null; try { + response.setContentType("application/json; charset=EUC-KR"); sos = response.getOutputStream(); - sos.write(resultS.toString().getBytes()); + sos.write(resultS.toString().getBytes("EUC-KR")); } catch( Exception e ) { - e.printStackTrace(); + e.printStackTrace(); } finally { if( sis != null ) sis.close(); if( sos != null ) sos.close(); From 837904d4e5e11bbc3aaec3c1c8b30dd1018be1fd Mon Sep 17 00:00:00 2001 From: daekuk1 Date: Tue, 3 Feb 2026 17:03:28 +0900 Subject: [PATCH 4/5] =?UTF-8?q?quartz=20job=20spring=20bean=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/DailyToMonthlyAggregationJob.java | 21 ++++++++++++------- .../job/HourlyToDailyAggregationJob.java | 20 +++++++++++------- .../job/MonthlyToYearlyAggregationJob.java | 21 ++++++++++++------- 3 files changed, 41 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/eactive/ext/kjb/statistics/job/DailyToMonthlyAggregationJob.java b/src/main/java/com/eactive/ext/kjb/statistics/job/DailyToMonthlyAggregationJob.java index 149b554..cb25000 100644 --- a/src/main/java/com/eactive/ext/kjb/statistics/job/DailyToMonthlyAggregationJob.java +++ b/src/main/java/com/eactive/ext/kjb/statistics/job/DailyToMonthlyAggregationJob.java @@ -10,9 +10,11 @@ import java.util.List; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; +import org.quartz.SchedulerException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -39,7 +41,6 @@ public class DailyToMonthlyAggregationJob implements Job { private ApiStatsDayService apiStatsDayService; private ApiStatsMonthService apiStatsMonthService; - private DailyToMonthlyAggregationJob self; @Autowired public void setApiStatsDayService(ApiStatsDayService apiStatsDayService) { @@ -51,18 +52,24 @@ public class DailyToMonthlyAggregationJob implements Job { this.apiStatsMonthService = apiStatsMonthService; } - @Autowired - public void setSelf(DailyToMonthlyAggregationJob self) { - this.self = self; - } - @Override public void execute(JobExecutionContext context) throws JobExecutionException { + + ApplicationContext appContext = null; + final DailyToMonthlyAggregationJob selfJob; + try { + appContext = (ApplicationContext) context.getScheduler().getContext().get("applicationContext"); + selfJob = appContext.getBean(DailyToMonthlyAggregationJob.class); + } catch (SchedulerException e) { + log.error("applicationContext get module error",e); + return ; + } + DataSourceType dataType = DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.APIGW); DataSourceContextHolder.setDataSourceType(dataType); try { YearMonth targetMonth = YearMonth.now().minusMonths(1); - self.executeManual(targetMonth); + selfJob.executeManual(targetMonth); } catch (Exception e) { throw new JobExecutionException(e); } finally { diff --git a/src/main/java/com/eactive/ext/kjb/statistics/job/HourlyToDailyAggregationJob.java b/src/main/java/com/eactive/ext/kjb/statistics/job/HourlyToDailyAggregationJob.java index feb20ee..a71b783 100644 --- a/src/main/java/com/eactive/ext/kjb/statistics/job/HourlyToDailyAggregationJob.java +++ b/src/main/java/com/eactive/ext/kjb/statistics/job/HourlyToDailyAggregationJob.java @@ -9,9 +9,11 @@ import java.util.List; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; +import org.quartz.SchedulerException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -38,7 +40,6 @@ public class HourlyToDailyAggregationJob implements Job { private ApiStatsHourService apiStatsHourService; private ApiStatsDayService apiStatsDayService; - private HourlyToDailyAggregationJob self; @Autowired public void setApiStatsHourService(ApiStatsHourService apiStatsHourService) { @@ -50,18 +51,23 @@ public class HourlyToDailyAggregationJob implements Job { this.apiStatsDayService = apiStatsDayService; } - @Autowired - public void setSelf(HourlyToDailyAggregationJob self) { - this.self = self; - } - @Override public void execute(JobExecutionContext context) throws JobExecutionException { + ApplicationContext appContext = null; + final HourlyToDailyAggregationJob selfJob; + try { + appContext = (ApplicationContext) context.getScheduler().getContext().get("applicationContext"); + selfJob = appContext.getBean(HourlyToDailyAggregationJob.class); + } catch (SchedulerException e) { + log.error("applicationContext get module error",e); + return ; + } + DataSourceType dataType = DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.APIGW); DataSourceContextHolder.setDataSourceType(dataType); try { LocalDate targetDate = LocalDate.now().minusDays(1); - self.executeManual(targetDate); + selfJob.executeManual(targetDate); } catch (Exception e) { throw new JobExecutionException(e); } finally { diff --git a/src/main/java/com/eactive/ext/kjb/statistics/job/MonthlyToYearlyAggregationJob.java b/src/main/java/com/eactive/ext/kjb/statistics/job/MonthlyToYearlyAggregationJob.java index b0450ee..c3fe895 100644 --- a/src/main/java/com/eactive/ext/kjb/statistics/job/MonthlyToYearlyAggregationJob.java +++ b/src/main/java/com/eactive/ext/kjb/statistics/job/MonthlyToYearlyAggregationJob.java @@ -8,9 +8,11 @@ import java.util.List; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; +import org.quartz.SchedulerException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -37,7 +39,6 @@ public class MonthlyToYearlyAggregationJob implements Job { private ApiStatsMonthService apiStatsMonthService; private ApiStatsYearService apiStatsYearService; - private MonthlyToYearlyAggregationJob self; @Autowired public void setApiStatsMonthService(ApiStatsMonthService apiStatsMonthService) { @@ -49,18 +50,24 @@ public class MonthlyToYearlyAggregationJob implements Job { this.apiStatsYearService = apiStatsYearService; } - @Autowired - public void setSelf(MonthlyToYearlyAggregationJob self) { - this.self = self; - } - @Override public void execute(JobExecutionContext context) throws JobExecutionException { + + ApplicationContext appContext = null; + final MonthlyToYearlyAggregationJob selfJob; + try { + appContext = (ApplicationContext) context.getScheduler().getContext().get("applicationContext"); + selfJob = appContext.getBean(MonthlyToYearlyAggregationJob.class); + } catch (SchedulerException e) { + log.error("applicationContext get module error",e); + return ; + } + DataSourceType dataType = DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.APIGW); DataSourceContextHolder.setDataSourceType(dataType); try { Year targetYear = Year.now().minusYears(1); - self.executeManual(targetYear); + selfJob.executeManual(targetYear); } catch (Exception e) { throw new JobExecutionException(e); } finally { From 98b236f9f51c590f331caf7252663cf512a2309a Mon Sep 17 00:00:00 2001 From: daekuk1 Date: Tue, 3 Feb 2026 17:55:01 +0900 Subject: [PATCH 5/5] =?UTF-8?q?MCI=20=EC=84=B1=EA=B3=B5=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/rule/layoutsync/LayoutSyncController.java | 10 ++++++++-- .../manage/rule/layoutsync/UseSystemException.java | 11 +++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/UseSystemException.java diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java index dfbf837..15604d6 100644 --- a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java +++ b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/LayoutSyncController.java @@ -529,7 +529,7 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements if (!"EAI".equalsIgnoreCase(useSystem) && !"FEP".equalsIgnoreCase(useSystem)) { String errorMessage = "사용 시스템(" + useSystem + ")인 전문레이아웃은 EAI, FEP로 배포 안됨."; logger.error(errorMessage); - throw new Exception(errorMessage); + throw new UseSystemException(errorMessage); } if( "ASCII".equals(format.getAttributeValue("msgType")) ) { @@ -604,9 +604,15 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements logger.error("",e.getStackTrace()[0]); try { if( results != null ) { - results.getChild("Result").setText("False"); + if (e instanceof UseSystemException) { + results.getChild("Result").setText("True"); + } else { + results.getChild("Result").setText("False"); + } results.getChild("ResultMessage").setText( e.getMessage() ); + + resultS = StringUtils.toXMLString(rDoc, true); } if( param.get("logPrcssSeqno") == null ) { diff --git a/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/UseSystemException.java b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/UseSystemException.java new file mode 100644 index 0000000..6053d35 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/onl/manage/rule/layoutsync/UseSystemException.java @@ -0,0 +1,11 @@ +package com.eactive.eai.rms.onl.manage.rule.layoutsync; + +import com.eactive.eai.rms.onl.common.exception.EMSRuntimeException; + +public class UseSystemException extends EMSRuntimeException { + + public UseSystemException(String message) { + super(message); + } + +}