From c38fbfa1ffe509562e967c72d550178f6457603e Mon Sep 17 00:00:00 2001 From: dsjang Date: Thu, 12 Sep 2024 09:27:55 +0900 Subject: [PATCH] =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=B8=94=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=EC=A1=B0=EA=B1=B4=20=EC=88=98=EC=A0=95,=20=ED=81=B4?= =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EC=96=B8=ED=8A=B8=20=EC=A2=85=EB=A3=8C?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4,=20=EB=A1=9C=EA=B9=85=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../client/config/DataSourceConfig.java | 37 ++++- .../client/cubrid/service/CubridService.java | 2 +- .../mariadb/service/MariaDBService.java | 2 +- .../client/mssql/service/MssqlService.java | 2 +- .../client/mysql/service/MysqlService.java | 2 +- .../client/oracle/service/OracleService.java | 2 +- .../postgresql/service/PostgresqlService.java | 2 +- .../munjaon/client/server/packet/Packet.java | 4 + .../server/service/CollectClientService.java | 136 ++++++++++++++---- .../server/service/ReportClientService.java | 13 +- .../client/server/service/Service.java | 2 + src/main/resources/application.yml | 4 + src/main/resources/logback-spring.xml | 122 +++++++--------- 14 files changed, 221 insertions(+), 111 deletions(-) diff --git a/build.gradle b/build.gradle index 66b7b35..1542a1c 100644 --- a/build.gradle +++ b/build.gradle @@ -47,7 +47,7 @@ dependencies { // https://mvnrepository.com/artifact/org.apache.commons/commons-configuration2 implementation 'org.apache.commons:commons-configuration2:2.10.1' // https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client - implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '3.4.1' + implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '3.1.4' // https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc11 implementation group: 'com.oracle.database.jdbc', name: 'ojdbc11', version: '23.5.0.24.07' // https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc diff --git a/src/main/java/com/munjaon/client/config/DataSourceConfig.java b/src/main/java/com/munjaon/client/config/DataSourceConfig.java index 895efa5..1859cfd 100644 --- a/src/main/java/com/munjaon/client/config/DataSourceConfig.java +++ b/src/main/java/com/munjaon/client/config/DataSourceConfig.java @@ -1,5 +1,6 @@ package com.munjaon.client.config; +import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -39,14 +40,38 @@ public class DataSourceConfig { System.out.println("MARIADB.URL : " + serverConfig.getString(dbms + ".URL")); System.out.println("MARIADB.USER : " + serverConfig.getString(dbms + ".USER")); System.out.println("MARIADB.PASSWORD : " + serverConfig.getString(dbms + ".PASSWORD")); - return DataSourceBuilder.create().type(HikariDataSource.class) - .driverClassName(serverConfig.getString(dbms + ".DRIVER")) - .url(serverConfig.getString(dbms + ".URL")) - .username(serverConfig.getString(dbms + ".USER")) - .password(serverConfig.getString(dbms + ".PASSWORD")) - .build(); + + HikariConfig hikariConfig = new HikariConfig(); + hikariConfig.setDriverClassName(serverConfig.getString(dbms + ".DRIVER")); + hikariConfig.setJdbcUrl(serverConfig.getString(dbms + ".URL")); + hikariConfig.setUsername(serverConfig.getString(dbms + ".USER")); + hikariConfig.setPassword(serverConfig.getString(dbms + ".PASSWORD")); + hikariConfig.setMaximumPoolSize(10); + if ("ORACLE".equalsIgnoreCase(dbms) || "TIBERO".equalsIgnoreCase(dbms)) { + hikariConfig.setConnectionTestQuery("SELECT 1 FROM DUAL"); + } else { + hikariConfig.setConnectionTestQuery("SELECT 1"); + } + + return new HikariDataSource(hikariConfig); } +// @Primary +// @Bean(name = "datasource") +// public DataSource dataSource() throws ConfigurationException { +// String dbms = serverConfig.getString("DB.DBMS"); +// System.out.println("MARIADB.DRIVER : " + serverConfig.getString(dbms + ".DRIVER")); +// System.out.println("MARIADB.URL : " + serverConfig.getString(dbms + ".URL")); +// System.out.println("MARIADB.USER : " + serverConfig.getString(dbms + ".USER")); +// System.out.println("MARIADB.PASSWORD : " + serverConfig.getString(dbms + ".PASSWORD")); +// return DataSourceBuilder.create().type(HikariDataSource.class) +// .driverClassName(serverConfig.getString(dbms + ".DRIVER")) +// .url(serverConfig.getString(dbms + ".URL")) +// .username(serverConfig.getString(dbms + ".USER")) +// .password(serverConfig.getString(dbms + ".PASSWORD")) +// .build(); +// } + @Primary @Bean(name = "factory") public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { diff --git a/src/main/java/com/munjaon/client/cubrid/service/CubridService.java b/src/main/java/com/munjaon/client/cubrid/service/CubridService.java index d12ec85..6e31f6f 100644 --- a/src/main/java/com/munjaon/client/cubrid/service/CubridService.java +++ b/src/main/java/com/munjaon/client/cubrid/service/CubridService.java @@ -20,7 +20,7 @@ public class CubridService { try { int msgCount = deliverBMapper.checkTableForMessage(); int logCount = deliverBMapper.checkTableForLog(); - if (msgCount >= 0 && logCount >= 0) { + if (msgCount > 0 && logCount > 0) { isExist = true; } } catch (Exception e) { diff --git a/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java b/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java index 23fdd05..6c9238d 100644 --- a/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java +++ b/src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java @@ -20,7 +20,7 @@ public class MariaDBService { try { int msgCount = deliverBMapper.checkTableForMessage(); int logCount = deliverBMapper.checkTableForLog(); - if (msgCount >= 0 && logCount >= 0) { + if (msgCount > 0 && logCount > 0) { isExist = true; } } catch (Exception e) { diff --git a/src/main/java/com/munjaon/client/mssql/service/MssqlService.java b/src/main/java/com/munjaon/client/mssql/service/MssqlService.java index ac67cdc..d9fa214 100644 --- a/src/main/java/com/munjaon/client/mssql/service/MssqlService.java +++ b/src/main/java/com/munjaon/client/mssql/service/MssqlService.java @@ -20,7 +20,7 @@ public class MssqlService { try { int msgCount = deliverBMapper.checkTableForMessage(); int logCount = deliverBMapper.checkTableForLog(); - if (msgCount >= 0 && logCount >= 0) { + if (msgCount > 0 && logCount > 0) { isExist = true; } } catch (Exception e) { diff --git a/src/main/java/com/munjaon/client/mysql/service/MysqlService.java b/src/main/java/com/munjaon/client/mysql/service/MysqlService.java index 7d4fbcc..c5f2c64 100644 --- a/src/main/java/com/munjaon/client/mysql/service/MysqlService.java +++ b/src/main/java/com/munjaon/client/mysql/service/MysqlService.java @@ -20,7 +20,7 @@ public class MysqlService { try { int msgCount = deliverBMapper.checkTableForMessage(); int logCount = deliverBMapper.checkTableForLog(); - if (msgCount >= 0 && logCount >= 0) { + if (msgCount > 0 && logCount > 0) { isExist = true; } } catch (Exception e) { diff --git a/src/main/java/com/munjaon/client/oracle/service/OracleService.java b/src/main/java/com/munjaon/client/oracle/service/OracleService.java index a24f10c..fd05fce 100644 --- a/src/main/java/com/munjaon/client/oracle/service/OracleService.java +++ b/src/main/java/com/munjaon/client/oracle/service/OracleService.java @@ -20,7 +20,7 @@ public class OracleService { try { int msgCount = deliverBMapper.checkTableForMessage(); int logCount = deliverBMapper.checkTableForLog(); - if (msgCount >= 0 && logCount >= 0) { + if (msgCount > 0 && logCount > 0) { isExist = true; } } catch (Exception e) { diff --git a/src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java b/src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java index 77b10e4..68b5402 100644 --- a/src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java +++ b/src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java @@ -20,7 +20,7 @@ public class PostgresqlService { try { int msgCount = deliverBMapper.checkTableForMessage(); int logCount = deliverBMapper.checkTableForLog(); - if (msgCount >= 0 && logCount >= 0) { + if (msgCount > 0 && logCount > 0) { isExist = true; } } catch (Exception e) { diff --git a/src/main/java/com/munjaon/client/server/packet/Packet.java b/src/main/java/com/munjaon/client/server/packet/Packet.java index 69a4f65..841e9a4 100644 --- a/src/main/java/com/munjaon/client/server/packet/Packet.java +++ b/src/main/java/com/munjaon/client/server/packet/Packet.java @@ -5,6 +5,10 @@ import java.nio.ByteBuffer; public final class Packet { public static final byte SET_DEFAULT_BYTE = (byte) 0x00; public static final long LINK_CHECK_CYCLE = 10000L; + /* 패킷 만료 시간 체크 */ + public static final long LIMIT_PACKET_TIMEOUT = 25000L; + /* 패킷을 보내고 수신시까지 타임아웃 체크시간 */ + public static final long LIMIT_PACKET_SEND_TIMEOUT = 30000L; // public static final long LINK_CHECK_CYCLE = 30000L; public static void setDefaultByte(ByteBuffer buffer) { diff --git a/src/main/java/com/munjaon/client/server/service/CollectClientService.java b/src/main/java/com/munjaon/client/server/service/CollectClientService.java index 06be303..dea1265 100644 --- a/src/main/java/com/munjaon/client/server/service/CollectClientService.java +++ b/src/main/java/com/munjaon/client/server/service/CollectClientService.java @@ -80,12 +80,19 @@ public class CollectClientService extends Service { } } + private boolean checkTimeOut() { + return System.currentTimeMillis() - lastPacketSendTime >= Packet.LIMIT_PACKET_TIMEOUT; + } + @Override public void doService() { bind(); while (isRun()) { try { -// saveSystemLog("Root Path : " + System.getProperty("ROOTPATH")); + if (checkTimeOut()) { + saveSystemLog("[checkTimeOut : Expired ... ... ... ... ... ... ...]"); + break; + }; messageService(); linkCheckService(); } catch (Exception e) { @@ -103,7 +110,12 @@ public class CollectClientService extends Service { try { saveSystemLog("[BIND REQUEST] [IP : " + this.address + "] [PORT : " + this.port + "] [ID : " + this.id + "]"); socketChannel.write(sendBuffer); + long BIND_SEND_TIME = System.currentTimeMillis(); while (true) { + if (System.currentTimeMillis() - BIND_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) { + saveSystemLog("[bindTimeOut : Expired ... ... ... ... ... ... ...]"); + throw new RuntimeException("bindTimeOut : Expired ... ... ... ... ... ... ..."); + } int recvCount = socketChannel.read(recvBuffer); if (recvCount == -1) { saveSystemLog("[BIND ERROR] [CONNECTION CLOSED]"); @@ -172,17 +184,24 @@ public class CollectClientService extends Service { return; } - for (MunjaonMsg data : list) { - switch (this.serviceType) { - case "SMS": smsMessageService(data); break; - case "LMS": lmsMessageService(data); break; - case "MMS": mmsMessageService(data); break; - case "KAT": katMessageService(data); break; - case "KFT": kftMessageService(data); break; - default:break; + try { + for (MunjaonMsg data : list) { + switch (this.serviceType) { + case "SMS": smsMessageService(data); break; + case "LMS": lmsMessageService(data); break; + case "MMS": mmsMessageService(data); break; + case "KAT": katMessageService(data); break; + case "KFT": kftMessageService(data); break; + default:break; + } } + } catch (Exception e) { + saveSystemLog("ERROR [" + e.getMessage() + "]"); + saveSystemLog("ERROR DETAIL"); + saveSystemLog(e.toString()); } - if (this.deliverList != null && this.deliverList.size() > 0) { + + if (this.deliverList != null && !this.deliverList.isEmpty()) { worker.updateDeliverForList(this.deliverList); this.deliverList = null; // NULL로 초기화 } @@ -218,7 +237,12 @@ public class CollectClientService extends Service { saveSystemLog("[MESSAGE SEND] [... ...]"); saveSystemLog("[MESSAGE DATA : " + data.toString() + "]"); socketChannel.write(sendBuffer); + long MSG_SEND_TIME = System.currentTimeMillis(); while (true) { + if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) { + saveSystemLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]"); + throw new RuntimeException("messageSendTimeOut : Expired ... ... ... ... ... ... ..."); + } int recvCount = socketChannel.read(recvBuffer); if (recvCount == -1) { saveSystemLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]"); @@ -232,8 +256,10 @@ public class CollectClientService extends Service { } } } catch (IOException e) { - e.printStackTrace(); -// throw new RuntimeException(e); + saveSystemLog("ERROR [" + e.getMessage() + "]"); + saveSystemLog("ERROR DETAIL"); + saveSystemLog(e.toString()); + throw new RuntimeException(e); } } @@ -267,27 +293,44 @@ public class CollectClientService extends Service { saveSystemLog("[MESSAGE SEND] [... ...]"); saveSystemLog("[MESSAGE DATA : " + data.toString() + "]"); socketChannel.write(sendBuffer); + long MSG_SEND_TIME = System.currentTimeMillis(); while (true) { + if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) { + saveSystemLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]"); + throw new RuntimeException("messageSendTimeOut : Expired ... ... ... ... ... ... ..."); + } int recvCount = socketChannel.read(recvBuffer); if (recvCount == -1) { saveSystemLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]"); throw new RuntimeException("DELIVER ERROR"); } else if (recvCount > 0) { - worker.updateToDeliver(data.getMsgId()); + setDeliverMsgId(data.getMsgId()); +// worker.updateToDeliver(data.getMsgId()); saveSystemLog("[MESSAGE SEND] [SUCCESS]"); lastPacketSendTime = System.currentTimeMillis(); break; } } } catch (IOException e) { + saveSystemLog("ERROR [" + e.getMessage() + "]"); + saveSystemLog("ERROR DETAIL"); + saveSystemLog(e.toString()); throw new RuntimeException(e); } } private void mmsMessageService(MunjaonMsg data) { try { + /* 이미지 경로 디폴트 경로 사용 여부 */ + String defaultYn = getProp("MMS", "DEFAULT_PATH_YN"); /* MMS Image 저장 경로 */ - String path = System.getProperty("ROOTPATH") + File.separator + "mmsfile" + File.separator; + String path = null; + if ("Y".equals(defaultYn)) { + path = System.getProperty("ROOTPATH") + File.separator + "mmsfile" + File.separator; + } else { + path = getProp("MMS", "FILEPATH") + File.separator; + } + /* 공통 메시지 유효성 체크 */ int checkCommonCode = MessageCheckUtil.validateMessageForCommon(data); int checkMsgCode = MessageCheckUtil.validateMessageForMedia(data); @@ -363,29 +406,43 @@ public class CollectClientService extends Service { } socketChannel.write(byteBuffers); - + long MSG_SEND_TIME = System.currentTimeMillis(); while (true) { + if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) { + saveSystemLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]"); + throw new RuntimeException("messageSendTimeOut : Expired ... ... ... ... ... ... ..."); + } int recvCount = socketChannel.read(recvBuffer); if (recvCount == -1) { saveSystemLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]"); throw new RuntimeException("DELIVER ERROR"); } else if (recvCount > 0) { - worker.updateToDeliver(data.getMsgId()); + setDeliverMsgId(data.getMsgId()); +// worker.updateToDeliver(data.getMsgId()); saveSystemLog("[MESSAGE SEND] [SUCCESS]"); lastPacketSendTime = System.currentTimeMillis(); break; } } } catch (IOException e) { - e.printStackTrace(); + saveSystemLog("ERROR [" + e.getMessage() + "]"); + saveSystemLog("ERROR DETAIL"); + saveSystemLog(e.toString()); throw new RuntimeException(e); } } private void katMessageService(MunjaonMsg data) { try { + /* 이미지 경로 디폴트 경로 사용 여부 */ + String defaultYn = getProp("KAKAO", "DEFAULT_PATH_YN"); /* Kakao Json 저장 경로 */ - String path = System.getProperty("ROOTPATH") + File.separator + "kakaofile" + File.separator; + String path = null; + if ("Y".equals(defaultYn)) { + path = System.getProperty("ROOTPATH") + File.separator + "kakaofile" + File.separator; + } else { + path = getProp("KAKAO", "FILEPATH") + File.separator; + } /* 공통 메시지 유효성 체크 */ int checkCommonCode = MessageCheckUtil.validateMessageForCommon(data); int checkMsgCode = MessageCheckUtil.validateMessageForKakao(data); @@ -426,29 +483,43 @@ public class CollectClientService extends Service { byteBuffers[1] = fileBuffer; socketChannel.write(byteBuffers); - + long MSG_SEND_TIME = System.currentTimeMillis(); while (true) { + if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) { + saveSystemLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]"); + throw new RuntimeException("messageSendTimeOut : Expired ... ... ... ... ... ... ..."); + } int recvCount = socketChannel.read(recvBuffer); if (recvCount == -1) { saveSystemLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]"); throw new RuntimeException("DELIVER ERROR"); } else if (recvCount > 0) { - worker.updateToDeliver(data.getMsgId()); + setDeliverMsgId(data.getMsgId()); +// worker.updateToDeliver(data.getMsgId()); saveSystemLog("[MESSAGE SEND] [SUCCESS]"); lastPacketSendTime = System.currentTimeMillis(); break; } } } catch (IOException e) { - e.printStackTrace(); + saveSystemLog("ERROR [" + e.getMessage() + "]"); + saveSystemLog("ERROR DETAIL"); + saveSystemLog(e.toString()); throw new RuntimeException(e); } } private void kftMessageService(MunjaonMsg data) { try { + /* 이미지 경로 디폴트 경로 사용 여부 */ + String defaultYn = getProp("KAKAO", "DEFAULT_PATH_YN"); /* Kakao Json 저장 경로 */ - String path = System.getProperty("ROOTPATH") + File.separator + "kakaofile" + File.separator; + String path = null; + if ("Y".equals(defaultYn)) { + path = System.getProperty("ROOTPATH") + File.separator + "kakaofile" + File.separator; + } else { + path = getProp("KAKAO", "FILEPATH") + File.separator; + } /* 공통 메시지 유효성 체크 */ int checkCommonCode = MessageCheckUtil.validateMessageForCommon(data); int checkMsgCode = MessageCheckUtil.validateMessageForKakao(data); @@ -488,21 +559,28 @@ public class CollectClientService extends Service { byteBuffers[1] = fileBuffer; socketChannel.write(byteBuffers); - + long MSG_SEND_TIME = System.currentTimeMillis(); while (true) { + if (System.currentTimeMillis() - MSG_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) { + saveSystemLog("[messageSendTimeOut : Expired ... ... ... ... ... ... ...]"); + throw new RuntimeException("messageSendTimeOut : Expired ... ... ... ... ... ... ..."); + } int recvCount = socketChannel.read(recvBuffer); if (recvCount == -1) { saveSystemLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]"); throw new RuntimeException("DELIVER ERROR"); } else if (recvCount > 0) { - worker.updateToDeliver(data.getMsgId()); + setDeliverMsgId(data.getMsgId()); +// worker.updateToDeliver(data.getMsgId()); saveSystemLog("[MESSAGE SEND] [SUCCESS]"); lastPacketSendTime = System.currentTimeMillis(); break; } } } catch (IOException e) { - e.printStackTrace(); + saveSystemLog("ERROR [" + e.getMessage() + "]"); + saveSystemLog("ERROR DETAIL"); + saveSystemLog(e.toString()); throw new RuntimeException(e); } } @@ -517,7 +595,12 @@ public class CollectClientService extends Service { try { saveSystemLog("[LINK_CHECK SEND] [... ...]"); socketChannel.write(LinkCheck.makeLinkCheckBuffer()); + long LINK_SEND_TIME = System.currentTimeMillis(); while (true) { + if (System.currentTimeMillis() - LINK_SEND_TIME >= Packet.LIMIT_PACKET_SEND_TIMEOUT) { + saveSystemLog("[LinkcheckTimeOut : Expired ... ... ... ... ... ... ...]"); + throw new RuntimeException("LinkcheckTimeOut : Expired ... ... ... ... ... ... ..."); + } int recvCount = socketChannel.read(recvBuffer); if (recvCount == -1) { saveSystemLog("[LINK_CHECK SEND] [FAIL] [SOCKET IS CLOSED]"); @@ -529,6 +612,9 @@ public class CollectClientService extends Service { } } } catch (Exception e) { + saveSystemLog("ERROR [" + e.getMessage() + "]"); + saveSystemLog("ERROR DETAIL"); + saveSystemLog(e.toString()); throw new RuntimeException(e); } } diff --git a/src/main/java/com/munjaon/client/server/service/ReportClientService.java b/src/main/java/com/munjaon/client/server/service/ReportClientService.java index 5393135..d9791aa 100644 --- a/src/main/java/com/munjaon/client/server/service/ReportClientService.java +++ b/src/main/java/com/munjaon/client/server/service/ReportClientService.java @@ -78,11 +78,19 @@ public class ReportClientService extends Service { } } + private boolean checkTimeOut() { + return System.currentTimeMillis() - lastPacketSendTime >= Packet.LIMIT_PACKET_TIMEOUT; + } + @Override public void doService() { bind(); while (isRun()) { try { + if (checkTimeOut()) { + saveSystemLog("[checkTimeOut : Expired ... ... ... ... ... ... ...]"); + break; + }; messageService(); } catch (Exception e) { throw new RuntimeException(e); @@ -94,8 +102,9 @@ public class ReportClientService extends Service { ByteBuffer sendBuffer = Bind.makeBindBuffer(id, pwd); ByteBuffer recvBuffer = ByteBuffer.allocate(Header.HEADER_LENGTH + Bind.BIND_ACK_BODY_LENGTH); try { - saveSystemLog("sendBuffer " + sendBuffer.position() + ":" + sendBuffer.limit()); +// saveSystemLog("sendBuffer " + sendBuffer.position() + ":" + sendBuffer.limit()); saveSystemLog("Bind Try Connect to " + this.address + ":" + this.port); + Thread.sleep(300); socketChannel.write(sendBuffer); saveSystemLog("Bind Read to " + this.address + ":" + this.port); while (true) { @@ -173,6 +182,7 @@ public class ReportClientService extends Service { saveSystemLog("Report : " + data.toString()); worker.updateToReport(data); socketChannel.write(Report.makeReportAckBuffer()); + lastPacketSendTime = System.currentTimeMillis(); } } catch (Exception e) { e.printStackTrace(); @@ -184,6 +194,7 @@ public class ReportClientService extends Service { try { saveSystemLog("LinkCheck Received"); socketChannel.write(LinkCheck.makeLinkCheckAckBuffer()); + lastPacketSendTime = System.currentTimeMillis(); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/src/main/java/com/munjaon/client/server/service/Service.java b/src/main/java/com/munjaon/client/server/service/Service.java index 7af9646..51f650e 100644 --- a/src/main/java/com/munjaon/client/server/service/Service.java +++ b/src/main/java/com/munjaon/client/server/service/Service.java @@ -131,6 +131,8 @@ public abstract class Service extends Thread { } } finally { if(logger != null) { logger.close(); logger = null; } + /* Exception 발생 대비 자원 해제 */ + releaseResources(); } } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ab9b28f..61be3b6 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,6 +4,10 @@ spring: profiles: default: local +logging: + level: + root: info + agent: root-path: ${SERVICE_HOME} server-property-file: ${SERVICE_HOME}/config/munjaonAgent.conf \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 0dae019..e00f244 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -1,80 +1,58 @@ - - + + + + + + + - - - - ${LOG_PATTERN} - - - - - - - - - - ./log/info/info-${BY_DATE}.log - - INFO - ACCEPT - DENY - - - ${LOG_PATTERN} - - - ./backup/info/info-%d{yyyy-MM-dd}.%i.log - 100MB - 30 - 3GB - - + + + + ${CONSOLE_PATTERN} + + - - ./log/warn/warn-${BY_DATE}.log - - WARN - ACCEPT - DENY - - - ${LOG_PATTERN} - - - ./backup/warn/warn-%d{yyyy-MM-dd}.%i.log - 100MB - 30 - 3GB - - - - ./log/error/error-${BY_DATE}.log - - ERROR - ACCEPT - DENY - - - ${LOG_PATTERN} - - - ./backup/error/error-%d{yyyy-MM-dd}.%i.log - 100MB - 30 - 3GB - - + + + ${ROLLING_PATTERN} + + ${FILE_NAME} + + ${LOG_NAME_PATTERN} + ${MAX_HISTORY} + ${MAX_FILE_SIZE} + ${TOTAL_SIZE} + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file