From bc00f70fc41ea7120cdb1dde9c5875773559b3fb Mon Sep 17 00:00:00 2001 From: Gunhee Lee Date: Sun, 8 Jul 2018 15:52:55 +0900 Subject: [PATCH] [webapp][WIP] feature/webapp-couter-refresh --- .../thread/CounterEngineRefreshThread.java | 87 +++++++++++++++++++ .../client/thread/ServerSessionObserver.java | 2 +- 2 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 scouter.webapp/src/main/java/scouterx/webapp/framework/client/thread/CounterEngineRefreshThread.java diff --git a/scouter.webapp/src/main/java/scouterx/webapp/framework/client/thread/CounterEngineRefreshThread.java b/scouter.webapp/src/main/java/scouterx/webapp/framework/client/thread/CounterEngineRefreshThread.java new file mode 100644 index 000000000..377d35e8b --- /dev/null +++ b/scouter.webapp/src/main/java/scouterx/webapp/framework/client/thread/CounterEngineRefreshThread.java @@ -0,0 +1,87 @@ +/* + * Copyright 2015 the original author or authors. + * @https://github.com/scouter-project/scouter + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package scouterx.webapp.framework.client.thread; + +import lombok.extern.slf4j.Slf4j; +import scouter.lang.counters.CounterEngine; +import scouter.lang.pack.MapPack; +import scouter.lang.value.BlobValue; +import scouter.lang.value.Value; +import scouter.util.ThreadUtil; +import scouterx.webapp.framework.client.net.LoginMgr; +import scouterx.webapp.framework.client.server.Server; +import scouterx.webapp.framework.client.server.ServerManager; +import scouterx.webapp.framework.configure.ConfigureAdaptor; +import scouterx.webapp.framework.configure.ConfigureManager; + +import java.util.Set; + +/** + * @author Gun Lee (gunlee01@gmail.com) on 2017. 8. 26. + */ +@Slf4j +public class CounterEngineRefreshThread extends Thread { + public static final ConfigureAdaptor conf = ConfigureManager.getConfigure(); + private static CounterEngineRefreshThread thread; + + public synchronized static void load() { + if (thread == null) { + thread = new CounterEngineRefreshThread(); + thread.setDaemon(true); + thread.setName("CounterEngineRefreshThread"); + thread.start(); + } + } + + private static final long CHECK_INTERVAL = 15000; + + @Override + public void run() { + ThreadUtil.sleep(CHECK_INTERVAL); + while (true) { + try { + refreshCounterEngine(); + } catch (Throwable t) { + log.error("[Error][CounterEngineRefreshThread] error:{}", t.getMessage()); + } + ThreadUtil.sleep(CHECK_INTERVAL); + } + } + + private void refreshCounterEngine() { + Set serverIdSet = ServerManager.getInstance().getOpenServerIdList(); + if (serverIdSet.size() > 0) { + for (int serverId : serverIdSet) { + Server server = ServerManager.getInstance().getServer(serverId); + CounterEngine counterEngine = server.getCounterEngine(); + MapPack m = LoginMgr.getCounterXmlServer(server); + if (m != null) { + Value v1 = m.get("default"); + Value v2 = m.get("custom"); + + counterEngine.clear(); + counterEngine.parse(((BlobValue)v1).value); + if (v2 != null) { + counterEngine.parse(((BlobValue)v1).value); + } + } + } + } + } +} diff --git a/scouter.webapp/src/main/java/scouterx/webapp/framework/client/thread/ServerSessionObserver.java b/scouter.webapp/src/main/java/scouterx/webapp/framework/client/thread/ServerSessionObserver.java index d669ed090..d7c290932 100644 --- a/scouter.webapp/src/main/java/scouterx/webapp/framework/client/thread/ServerSessionObserver.java +++ b/scouter.webapp/src/main/java/scouterx/webapp/framework/client/thread/ServerSessionObserver.java @@ -83,7 +83,7 @@ public void run() { } } } catch (Throwable t) { - t.printStackTrace(); + log.error("[Error][ServerSessionObserver] error:{}", t.getMessage()); } ThreadUtil.sleep(CHECK_INTERVAL); }