From 895d346bb6d74812732a71420d491ad52f3b2f69 Mon Sep 17 00:00:00 2001 From: curry772 Date: Wed, 10 Jun 2026 15:10:33 +0900 Subject: [PATCH] =?UTF-8?q?=ED=91=9C=EC=A4=80=EC=A0=84=EB=AC=B8=EC=9D=B4?= =?UTF-8?q?=20JSON=20MS949=EC=9D=B8=20=EA=B2=BD=EC=9A=B0,=20=ED=95=9C?= =?UTF-8?q?=EA=B8=80=20=EA=B9=A8=EC=A7=90=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/HttpAdapterServiceStandard.java | 73 ++++++++++++------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/eactive/eai/adapter/http/dynamic/impl/HttpAdapterServiceStandard.java b/src/main/java/com/eactive/eai/adapter/http/dynamic/impl/HttpAdapterServiceStandard.java index 35d5757..2a15575 100644 --- a/src/main/java/com/eactive/eai/adapter/http/dynamic/impl/HttpAdapterServiceStandard.java +++ b/src/main/java/com/eactive/eai/adapter/http/dynamic/impl/HttpAdapterServiceStandard.java @@ -212,6 +212,7 @@ public class HttpAdapterServiceStandard extends HttpAdapterServiceSupport stopWatch.stop(); + byte[] responseBytes = null; String responseData = ""; if (RESPONSE_TYPE_ASYNC.equals(responseType)){ if (stopWatch.getTime() > slowTranTime){ @@ -222,17 +223,22 @@ public class HttpAdapterServiceStandard extends HttpAdapterServiceSupport if ( result == null) { responseData = ElinkConfig.getAsyncDummyDataForAdapterGroup(adptGrpName); + responseBytes = responseData.getBytes(); } else if (result instanceof byte[]) { responseData = new String((byte[]) result, encode); + responseBytes = (byte[]) result; } else if (result instanceof String) { - responseData = (String) result; - if ( StringUtils.isBlank( responseData ) ) { + responseBytes = ((String)result).getBytes(); + if ( StringUtils.isBlank((String)result ) ) { responseData = ElinkConfig.getAsyncDummyDataForAdapterGroup(adptGrpName, adptName); + responseBytes = responseData.getBytes(); } } response.setCharacterEncoding(encode); - response.getWriter().print(responseData); +// response.getWriter().print(responseData); + response.getOutputStream().write(responseBytes); + if (traceLevel >= 3){ HttpMemoryLogger.txlog(adptGrpName+adptName, "SEND "+"["+responseData+"]"+ ((responseData == null)?"":CommonLib.getDumpMessage(responseData)) @@ -240,45 +246,56 @@ public class HttpAdapterServiceStandard extends HttpAdapterServiceSupport } } else { if(requestBytes != null) { - if (result instanceof byte[]) { + if ( result == null) { + responseData = ElinkConfig.getAsyncDummyDataForAdapterGroup(adptGrpName); + responseBytes = responseData.getBytes(); + } else if (result instanceof byte[]) { responseData = new String((byte[]) result, encode); + responseBytes = (byte[]) result; } else if (result instanceof String) { - responseData = (String) result; + responseBytes = ((String)result).getBytes(); + if ( StringUtils.isBlank((String)result ) ) { + responseData = ElinkConfig.getAsyncDummyDataForAdapterGroup(adptGrpName, adptName); + responseBytes = responseData.getBytes(); + } } - + logger.info("종료 >> encode = [" + encode + "]"); if (addData.length() > 0){ responseData = addData + responseData; + responseBytes = responseData.getBytes(); } - try { - Object root = JSONValue.parse(responseData); - if( root instanceof JSONObject ) { - JSONObject wrappedObject = (JSONObject) root; - responseData = wrappedObject.get("DJB_ROOTLESS_ARRAY").toString(); - } - - }catch (Exception e) { - // ignore json이 아니기에 해줄것이 없음. - } +// try { +// Object root = JSONValue.parse(responseData); +// if( root instanceof JSONObject ) { +// JSONObject wrappedObject = (JSONObject) root; +// responseData = wrappedObject.get("DJB_ROOTLESS_ARRAY").toString(); +// } +// +// }catch (Exception e) { +// // ignore json이 아니기에 해줄것이 없음. +// } // 300응답에서 받은 Header정보 사용하기 위해 읽어옴. - Map responsePropertyMap = (Map) prop.get(OUTBOUND_PROPERTY_MAP); - if(responsePropertyMap != null){ - Properties responseHeaders = (Properties)responsePropertyMap.get(OUTBOUND_RESPONSE_HEADERS); - Map responseHeaderMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); - // Properties 내용을 모두 복사 - for (String name : responseHeaders.stringPropertyNames()) { - responseHeaderMap.put(name, responseHeaders.getProperty(name)); - } - String contentTytpe = responseHeaderMap.get("Content-Type"); - response.setContentType(contentTytpe); // 300응답에서 받은 Content-Type을 그대로 적용. - } +// Map responsePropertyMap = (Map) prop.get(OUTBOUND_PROPERTY_MAP); +// if(responsePropertyMap != null){ +// Properties responseHeaders = (Properties)responsePropertyMap.get(OUTBOUND_RESPONSE_HEADERS); +// Map responseHeaderMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); +// // Properties 내용을 모두 복사 +// for (String name : responseHeaders.stringPropertyNames()) { +// responseHeaderMap.put(name, responseHeaders.getProperty(name)); +// } +// String contentTytpe = responseHeaderMap.get("Content-Type"); +// response.setContentType(contentTytpe); // 300응답에서 받은 Content-Type을 그대로 적용. +// } // UI와 통신시(UTF-8) 변환오류로 ENCODE 제거 response.setCharacterEncoding(encode); - response.getWriter().print(responseData); +// response.getWriter().print(responseData); + response.getOutputStream().write(responseBytes); + if (logger.isDebug()){ logger.debug("HttpAdapter] SEND ("+adptGrpName+") = [" + responseData + "]"); logger.debug("HttpAdapter] SEND ("+adptGrpName+") = " +