shjung 2 年之前
父節點
當前提交
df09439141

+ 0 - 1
.mvn/wrapper/MavenWrapperDownloader.java

@@ -90,7 +90,6 @@ public class MavenWrapperDownloader {
             System.exit(0);
         } catch (Throwable e) {
             System.out.println("- Error downloading");
-            e.printStackTrace();
             System.exit(1);
         }
     }

+ 0 - 1
src/main/java/com/its/app/utils/SysUtils.java

@@ -62,7 +62,6 @@ public final class SysUtils
 			startDateTime = fastDateFormat.parse(startTm);
 			endDateTime = fastDateFormat.parse(endTm);
 		} catch (ParseException e) {
-			e.printStackTrace();
 			return -1;
 		}
 */

+ 4 - 1
src/main/java/com/its/app/utils/TimeUtils.java

@@ -1,10 +1,13 @@
 package com.its.app.utils;
 
+import lombok.extern.slf4j.Slf4j;
+
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 
+@Slf4j
 public class TimeUtils {
 
 	public static final int TYPE_CURR_05MIN = 0;
@@ -35,7 +38,7 @@ public class TimeUtils {
 		try {
 			to = transFormat.parse(paramTime);
 		} catch (ParseException e) {
-			e.printStackTrace();
+			log.error("stringToDate ParseException exception");
 		}
 		return to;
 	}

+ 1 - 1
src/main/java/com/its/wthr/config/ThreadPoolInitializer.java

@@ -45,7 +45,7 @@ public class ThreadPoolInitializer extends AsyncConfigurerSupport {
             this.work = MAX_CORE;
         }
         if (this.dbms <= 0) {
-            this.dbms = MAX_CORE;
+            this.dbms = MAX_CORE*2;
         }
         if (this.ping <= 0) {
             this.ping = MAX_CORE;

+ 1 - 1
src/main/java/com/its/wthr/process/AbstractDbmsJobProcess.java

@@ -31,7 +31,7 @@ public abstract class AbstractDbmsJobProcess {
     public void run() {
         log.info("AbstractDbmsJobProcess.run: Start.");
         if (this.MAX_CORE < 8) {
-            this.MAX_CORE = 8;
+            this.MAX_CORE = 16;
         }
         ThreadPoolInitializer poolInitializer = (ThreadPoolInitializer) AppUtils.getBean(ThreadPoolInitializer.class);
         int executePool = Math.max(this.MAX_CORE, poolInitializer.getWork());

+ 28 - 8
src/main/java/com/its/wthr/process/DbmsJobProcess.java

@@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -27,36 +28,55 @@ public class DbmsJobProcess extends AbstractDbmsJobProcess {
     @Override
     public void process(DbmsJobData data) {
 
-        log.info("DbmsJobProcess.process: start. type: {}", data.getType());
         Elapsed elapsed = new Elapsed();
 
         int count = 0;
         String sType = "Unknown";
+        int type = data.getType();
+        //log.info("DbmsJobProcess.process: start. type: {}", data.getType());
+//        int ii = 0;
         try {
-            int type = data.getType();
             switch(type) {
                 case DbmsJobType.DATA_TYPE_ATMP:
-                    List<AtmpPltnSttsVo> atmpPltnSttsList =  (List<AtmpPltnSttsVo>)data.getData();
-                    count = atmpPltnSttsList.size();
                     sType = "ATMP";
+                    if (data.getData() == null) {
+                        log.warn("DbmsJobProcess.process: ATMP data is NULL");
+                        break;
+                    }
+                    List<AtmpPltnSttsVo> atmpPltnSttsList =  ((List<AtmpPltnSttsVo>)data.getData()).stream().collect(Collectors.toList());
+                    count = atmpPltnSttsList.size();
+//                    for (ii = 0; ii < count; ii++) {
+//                        // java.util.ConcurrentModificationException
+//                        this.atmpMapper.updateAtmpPltnStts(atmpPltnSttsList.get(ii));
+//                    }
                     for (AtmpPltnSttsVo vo : atmpPltnSttsList) {
                         this.atmpMapper.updateAtmpPltnStts(vo);
                     }
                     atmpPltnSttsList.clear();
                     break;
                 case DbmsJobType.DATA_TYPE_FRCS:
-                    List<FrcsZoneSttsVo> frcsZoneSttsList = (List<FrcsZoneSttsVo>)data.getData();
-                    count = frcsZoneSttsList.size();
                     sType = "FRCS";
+                    if (data.getData() == null) {
+                        log.warn("DbmsJobProcess.process: FRCS data is NULL");
+                        break;
+                    }
+                    List<FrcsZoneSttsVo> frcsZoneSttsList = ((List<FrcsZoneSttsVo>)data.getData()).stream().collect(Collectors.toList());
+                    count = frcsZoneSttsList.size();
+//                    for (ii = 0; ii < count; ii++) {
+//                        // java.util.ConcurrentModificationException
+//                        this.frcsMapper.updateFrcsZoneStts(frcsZoneSttsList.get(ii));
+//                    }
                     for (FrcsZoneSttsVo vo : frcsZoneSttsList) {
                         this.frcsMapper.updateFrcsZoneStts(vo);
                     }
                     frcsZoneSttsList.clear();
                     break;
+                default:
+                    log.error("DbmsJobProcess.process: Unknown Data Type: {}", type);
+                    break;
             }
         } catch (Exception e) {
-            e.printStackTrace();
-            log.error("DbmsJobProcess.process: Exception: {}", e.toString());
+            log.error("DbmsJobProcess.process: Exception: {}, {}, {} EA. {}", type, sType, count, e.toString());
         }
         log.info("DbmsJobProcess.process: ..end: {}, {} EA, {} ms. {}", sType, count, elapsed.milliSeconds(), Thread.currentThread().getName());
     }

+ 14 - 16
src/main/java/com/its/wthr/service/AbstractXmlService.java

@@ -9,36 +9,34 @@ import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
 
 @Slf4j
 public class AbstractXmlService {
 
     public NodeList getXmlNodeList(String url, String nodeTag)
     {
-        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
-        DocumentBuilder documentBuilder = null;
-        Document document = null;
-
         try {
-            documentBuilder = documentBuilderFactory.newDocumentBuilder();
+            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+//            Document document = documentBuilder.parse(url);
+
+            URL xmlUrl = new URL(url);
+            URLConnection urlConnection = xmlUrl.openConnection();
+            urlConnection.setConnectTimeout(10000);   //The timeout in mills
+            Document document = documentBuilder.parse(urlConnection.getInputStream());
+
+            document.getDocumentElement().normalize();
+            return document.getElementsByTagName(nodeTag);
         } catch (ParserConfigurationException e) {
             log.error("getXmlNodeList(ParserConfigurationException): {}, {}: {}", url, nodeTag, e.toString());
-            return null;
-        }
-
-        try {
-            document = documentBuilder.parse(url);
         } catch (SAXException e) {
             log.error("getXmlNodeList(SAXException): {}, {}: {}", url, nodeTag, e.toString());
-            return null;
         } catch (IOException e) {
             log.error("getXmlNodeList(IOException): {}, {}: {}", url, nodeTag, e.toString());
-            return null;
         }
-
-        document.getDocumentElement().normalize();
-        NodeList nodeList = document.getElementsByTagName(nodeTag);
-        return nodeList;
+        return null;
     }
 
 }

+ 12 - 16
src/main/java/com/its/wthr/service/AtmpService.java

@@ -12,7 +12,6 @@ import com.its.wthr.vo.AtmpPltnSttsVo;
 import com.its.wthr.vo.AtmpPltnVo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.slf4j.MDC;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.w3c.dom.Element;
@@ -69,27 +68,25 @@ public class AtmpService extends AbstractXmlService {
         }
 
         String sysTime = SysUtils.getSysTimeStr();
-        String keyData = "atmp";
-        MDC.put("id", keyData);
         log.info("AtmpService doJob Start...");
 
         //load();
 
         int errCnt = 0;
-        List<AtmpPltnSttsVo> atmpPltnSttsList = Collections.synchronizedList(new ArrayList<>());
+        //List<AtmpPltnSttsVo> atmpPltnSttsList = Collections.synchronizedList(new ArrayList<>());
+        List<AtmpPltnSttsVo> atmpPltnSttsList = new ArrayList<>();
         try {
             log.info("AtmpService.doJbo: {} EA", AppRepository.getInstance().getAtmpPltnMap().size());
             for (Map.Entry<String, AtmpPltnVo> e : AppRepository.getInstance().getAtmpPltnMap().entrySet()) {
                 AtmpPltnVo obj = e.getValue();
                 if (obj.getDEL_YN().equals("Y")) continue;
 
-                log.info("AtmpService.doJob: {}-{}", obj.getATMP_STTN_NMBR(), obj.getATMP_STTN_NM());
+                //log.info("AtmpService.doJob: {}-{}", obj.getATMP_STTN_NMBR(), obj.getATMP_STTN_NM());
                 try {
                     AtmpPltnSttsVo stts = requestJob(obj);
                     if (stts != null) {
                         atmpPltnSttsList.add(stts);
-                    }
-                    else {
+                    } else {
                         errCnt++;
                     }
                 }
@@ -114,13 +111,14 @@ public class AtmpService extends AbstractXmlService {
         ////////////// 네트워크 또는 기상청 서버 오류로 인한 오류가 발생했을 경우 재시도
         //////////////
         if (errCnt > 0) {
-            List<AtmpPltnSttsVo> atmpPltnSttsList2 = Collections.synchronizedList(new ArrayList<>());
+            //List<AtmpPltnSttsVo> atmpPltnSttsList2 = Collections.synchronizedList(new ArrayList<>());
+            List<AtmpPltnSttsVo> atmpPltnSttsList2 = new ArrayList<>();
             errCnt = 0;
 
             try {
                 Thread.sleep(10000);
             } catch (InterruptedException e) {
-                e.printStackTrace();
+                log.error("AtmpService doJob thread sleep exception");
             }
 
             for (Map.Entry<String, AtmpPltnVo> e : AppRepository.getInstance().getAtmpPltnMap().entrySet()) {
@@ -152,8 +150,6 @@ public class AtmpService extends AbstractXmlService {
             }
         }
         log.info("AtmpService doJob ..End...");
-        MDC.remove(keyData);
-        MDC.clear();
 
         MainUI UI = MainUI.getInstance();
         if (UI != null) {
@@ -164,7 +160,7 @@ public class AtmpService extends AbstractXmlService {
     public AtmpPltnSttsVo requestJob(AtmpPltnVo obj) {
         AtmpPltnSttsVo stts = null;
         try {
-            log.info("AtmpService.requestJob: {}-{}", obj.getATMP_STTN_NMBR(), obj.getATMP_STTN_NM());
+            //log.info("AtmpService.requestJob: {}-{}", obj.getATMP_STTN_NMBR(), obj.getATMP_STTN_NM());
             try {
                 AppRepository.getInstance().getAtmpPltnMap().get(obj.getATMP_STTN_NMBR()).setRequestTime(SysUtils.getSysTimeStr());
 
@@ -189,7 +185,7 @@ public class AtmpService extends AbstractXmlService {
             }
         }
         catch(Exception e) {
-            log.error("AtmpService.requestJob: {}", e.toString());
+            log.error("AtmpService.requestJob: Exception: {}", e.toString());
         }
 
         return stts;
@@ -212,6 +208,7 @@ public class AtmpService extends AbstractXmlService {
         url = url + "&stationName=" + atmpSttnNmUTF8;
         url = url + "&dataTerm=DAILY";
         url = url + "&ver=" + this.config.getApiVer();
+
         log.info("AtmpService.getAtmpInfo: {}: {}, {}", atmpNmbr, atmpSttnNm, url);
 
         NodeList list = getXmlNodeList(url, "item");
@@ -255,7 +252,7 @@ public class AtmpService extends AbstractXmlService {
                     try {
                         date = sdformat.parse(sDateTime);
                     } catch (ParseException e) {
-                        e.printStackTrace();
+                        log.error("getAtmpInfo ParseException exception");
                     }
                     Calendar cal = Calendar.getInstance();
                     cal.setTime(date);
@@ -291,8 +288,7 @@ public class AtmpService extends AbstractXmlService {
             log.error("{}, {}", atmpSttnNm, e.toString());
             return null;
         }
-
-        log.info("AtmpService.getAtmpInfo: {} ==> {}", atmpSttnNm, stts.toString());
+        //log.info("AtmpService.getAtmpInfo: {} ==> {}", atmpSttnNm, stts.toString());
         return stts;
     }
 /*

+ 9 - 14
src/main/java/com/its/wthr/service/FrcsService.java

@@ -20,7 +20,6 @@ import com.rometools.rome.io.SyndFeedInput;
 import com.rometools.rome.io.XmlReader;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.slf4j.MDC;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.w3c.dom.Element;
@@ -82,8 +81,6 @@ public class FrcsService extends AbstractXmlService {
         }
 
         String sysTime = SysUtils.getSysTimeStr();
-        String keyData = "frcs";
-        MDC.put("id", keyData);
         log.info("FrcsService doJob Start...");
 
         //load();
@@ -95,7 +92,7 @@ public class FrcsService extends AbstractXmlService {
                 FrcsZoneVo obj = e.getValue();
                 if (obj.getDEL_YN().equals("Y")) continue;
 
-                log.info("FrcsService.doJob: {}-{}", obj.getVILG_FRCS_ZONE_CD(), obj.getVILG_FRCS_ZONE_NM());
+                //log.info("FrcsService.doJob: {}-{}", obj.getVILG_FRCS_ZONE_CD(), obj.getVILG_FRCS_ZONE_NM());
                 try {
                     AppRepository.getInstance().getFrcsZoneMap().get(obj.getVILG_FRCS_ZONE_CD()).setRequestTime(SysUtils.getSysTimeStr());
 
@@ -134,7 +131,7 @@ public class FrcsService extends AbstractXmlService {
             try {
                 Thread.sleep(10000);
             } catch (InterruptedException e) {
-                e.printStackTrace();
+                log.error("FrcsService InterruptedException thread sleep exception");
             }
 
             for (Map.Entry<String, FrcsZoneVo> e : AppRepository.getInstance().getFrcsZoneMap().entrySet()) {
@@ -171,8 +168,6 @@ public class FrcsService extends AbstractXmlService {
             }
         }
         log.info("FrcsService doJob ..End...");
-        MDC.remove(keyData);
-        MDC.clear();
 
         MainUI UI = MainUI.getInstance();
         if (UI != null) {
@@ -194,7 +189,7 @@ public class FrcsService extends AbstractXmlService {
         try {
             Node wid = list.item(0);    // <wid> 하나만 존재함
             NodeList widList = wid.getChildNodes();
-            log.info("widList: {}, {}, {} EA", wid.getNodeType(), wid.getNodeName(), widList.getLength());
+            //log.info("widList: {}, {}, {} EA", wid.getNodeType(), wid.getNodeName(), widList.getLength());
             String tm = "";
             for (int ii = 0; ii < widList.getLength(); ii++) {
                 Node node = widList.item(ii);
@@ -206,7 +201,7 @@ public class FrcsService extends AbstractXmlService {
                     String x = header.getElementsByTagName("x").item(0).getTextContent().trim();
                     String y = header.getElementsByTagName("y").item(0).getTextContent().trim();
 
-                    log.info("header: {}, {}, {}, {}", tm, ts, x, y);
+                    //log.info("header: {}, {}, {}, {}", tm, ts, x, y);
                 }
                 else if (tag.equals("body")) {
                     NodeList body = node.getChildNodes();
@@ -249,7 +244,7 @@ public class FrcsService extends AbstractXmlService {
                         tmp = data.getElementsByTagName("s06").item(0).getTextContent();    if (tmp != null) stts.setESTM_SNOW_AMUT_6HH(tmp.trim());
 
                         sttsList.add(stts);
-                        log.debug("{}, seq: {}, {}", jj, data.getAttributes().item(0).getTextContent(), stts.toString());
+                        //log.debug("{}, seq: {}, {}", jj, data.getAttributes().item(0).getTextContent(), stts.toString());
                     }
                 }
             }
@@ -315,20 +310,20 @@ public class FrcsService extends AbstractXmlService {
         try {
             url = new URL(urlBuilder.toString());
         } catch (MalformedURLException e) {
-            e.printStackTrace();
+            log.error("getXmlString MalformedURLException exception");
         }
 
         HttpURLConnection conn = null;
         try {
             conn = (HttpURLConnection) url.openConnection();
         } catch (IOException e) {
-            e.printStackTrace();
+            log.error("getXmlString IOException");
         }
 
         try {
             conn.setRequestMethod("GET");
         } catch (ProtocolException e) {
-            e.printStackTrace();
+            log.error("getXmlString ProtocolException");
         }
         conn.setRequestProperty("Content-type", "application/json");
 
@@ -346,7 +341,7 @@ public class FrcsService extends AbstractXmlService {
             }
             rd.close();
         } catch (IOException e) {
-            e.printStackTrace();
+            log.error("getXmlString IOException");
         }
         conn.disconnect();
         log.error(sb.toString());

+ 0 - 5
src/main/java/com/its/wthr/service/UnitSystService.java

@@ -12,7 +12,6 @@ import com.its.wthr.vo.UnitSystVo;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.slf4j.MDC;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -103,8 +102,6 @@ public class UnitSystService {
     }
 
     public void updateUnitSyst(boolean isRun) {
-        String keyData = "unit";
-        MDC.put("id", keyData);
         boolean insHs = false;
         Calendar cal = Calendar.getInstance();
         int min = cal.get(Calendar.MINUTE);
@@ -130,7 +127,5 @@ public class UnitSystService {
                 //loadMaster();
             }
         }
-        MDC.remove(keyData);
-        MDC.clear();
     }
 }

+ 4 - 1
src/main/java/com/its/wthr/ui/MonitoringTask.java

@@ -1,8 +1,11 @@
 package com.its.wthr.ui;
 
+import lombok.extern.slf4j.Slf4j;
+
 import javax.swing.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+@Slf4j
 public class MonitoringTask {
 	
 	private static final int TASK_LENGTH = 1000;
@@ -39,7 +42,7 @@ public class MonitoringTask {
 								}
 								statMessage = "Completed " + current + " out of " + lengthOfTask + ".";
 							} catch (InterruptedException e) {
-								e.printStackTrace();
+								log.error("MonitoringTask InterruptedException exception");
 							}
 						}
 					}

+ 3 - 8
src/main/java/com/its/wthr/webapp/controller/WebAppController.java

@@ -69,7 +69,7 @@ public class WebAppController {
         try {
             Thread.sleep(1000);
         } catch (InterruptedException e) {
-            e.printStackTrace();
+            log.error("requestAtmp thread sleep exception");
         }
 
         return result;
@@ -97,25 +97,20 @@ public class WebAppController {
     @ResponseBody
     public String requestFrcs() {
         String result = "동네예보 정보를 요청 하였습니다.";
-        /*try {
-            AtmpService.requestFrcs();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return result;*/
         FrcsService frcsService = (FrcsService)AppUtils.getBean(FrcsService.class);
         try {
             frcsService.doJob();
         }
         catch (Exception e) {
             result = "동네예보 정보 요청 중 오류가 발생 하였습니다.";
+            log.error("동네예보 정보 요청 중 Exception 오류가 발생 하였습니다.");
             return result;
         }
 
         try {
             Thread.sleep(1000);
         } catch (InterruptedException e) {
-            e.printStackTrace();
+            log.error("requestFrcs thread sleep exception");
         }
 
         return result;

+ 2 - 2
src/main/resources/logback-spring.xml

@@ -23,7 +23,7 @@
     <property name="MAX_FILESIZE" value="10MB"/>
     <property name="MAX_HISTORY"  value="30"/>
     <property name="LOG_PATTERN_FILE"        value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
-    <property name="LOG_PATTERN_ERROR"       value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%30t] [%5level] %42logger{35}.%-20M ${PID:-} %n%msg%n"/>
+    <property name="LOG_PATTERN_ERROR"       value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%30t] [%5level] %42logger{35}.%-20M%msg%n"/>
     <property name="LOG_PATTERN_PACKET"      value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
     <property name="LOG_PATTERN_SESSION"     value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
     <property name="LOG_PATTERN_CENTER_COMM" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
@@ -88,7 +88,7 @@
             <pattern>${LOG_PATTERN_ERROR}</pattern>
         </encoder>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${LOG_BACKUP_PATH}${LOG_FILE_NAME_ERROR}.%d{yyyy-MM-dd}_%i.log</fileNamePattern>
+            <fileNamePattern>${LOG_BACKUP_PATH}${LOG_FILE_NAME_ERROR}.${LOG_FILE_NAME_PATTERN}</fileNamePattern>
             <maxFileSize>${MAX_FILESIZE}</maxFileSize>
             <maxHistory>${MAX_HISTORY}</maxHistory>
         </rollingPolicy>