aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/Main.java
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2020-02-22 16:59:43 -0800
committerAnton Tananaev <anton.tananaev@gmail.com>2020-02-22 16:59:43 -0800
commit8d6e45331cb4ba86faaabfe7d1f9e7ccfd6e824d (patch)
treef6dcc78348c96a2785685dac603b5058304b62f6 /src/main/java/org/traccar/Main.java
parentdeb519ebd6798450509afaf4067e140edd7eb0d0 (diff)
downloadtraccar-server-8d6e45331cb4ba86faaabfe7d1f9e7ccfd6e824d.tar.gz
traccar-server-8d6e45331cb4ba86faaabfe7d1f9e7ccfd6e824d.tar.bz2
traccar-server-8d6e45331cb4ba86faaabfe7d1f9e7ccfd6e824d.zip
Support health monitoring
Diffstat (limited to 'src/main/java/org/traccar/Main.java')
-rw-r--r--src/main/java/org/traccar/Main.java59
1 files changed, 36 insertions, 23 deletions
diff --git a/src/main/java/org/traccar/Main.java b/src/main/java/org/traccar/Main.java
index 6ebd1d399..f5690b26d 100644
--- a/src/main/java/org/traccar/Main.java
+++ b/src/main/java/org/traccar/Main.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2012 - 2019 Anton Tananaev (anton@traccar.org)
+ * Copyright 2012 - 2020 Anton Tananaev (anton@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@ import com.google.inject.Guice;
import com.google.inject.Injector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.traccar.api.HealthCheckService;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
@@ -105,6 +106,27 @@ public final class Main {
}
}
+ private static void scheduleHealthCheck() {
+ HealthCheckService service = new HealthCheckService();
+ if (service.isEnabled()) {
+ new Timer().scheduleAtFixedRate(
+ service.createTask(), service.getPeriod(), service.getPeriod());
+ }
+ }
+
+ private static void scheduleDatabaseCleanup() {
+ new Timer().scheduleAtFixedRate(new TimerTask() {
+ @Override
+ public void run() {
+ try {
+ Context.getDataManager().clearHistory();
+ } catch (SQLException error) {
+ LOGGER.warn("Clear history error", error);
+ }
+ }
+ }, 0, CLEAN_PERIOD);
+ }
+
public static void run(String configFile) {
try {
Context.init(configFile);
@@ -118,35 +140,26 @@ public final class Main {
Context.getWebServer().start();
}
- new Timer().scheduleAtFixedRate(new TimerTask() {
+ new Timer().schedule(new TimerTask() {
@Override
public void run() {
- try {
- Context.getDataManager().clearHistory();
- } catch (SQLException error) {
- LOGGER.warn("Clear history error", error);
- }
+ Context.getWebServer().stop();
}
- }, 0, CLEAN_PERIOD);
+ }, 10 * 60 * 1000);
- Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
- @Override
- public void uncaughtException(Thread t, Throwable e) {
- LOGGER.error("Thread exception", e);
- }
- });
+ scheduleHealthCheck();
+ scheduleDatabaseCleanup();
- Runtime.getRuntime().addShutdownHook(new Thread() {
- @Override
- public void run() {
- LOGGER.info("Shutting down server...");
+ Thread.setDefaultUncaughtExceptionHandler((t, e) -> LOGGER.error("Thread exception", e));
+
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+ LOGGER.info("Shutting down server...");
- if (Context.getWebServer() != null) {
- Context.getWebServer().stop();
- }
- Context.getServerManager().stop();
+ if (Context.getWebServer() != null) {
+ Context.getWebServer().stop();
}
- });
+ Context.getServerManager().stop();
+ }));
} catch (Exception e) {
LOGGER.error("Main method error", e);
throw new RuntimeException(e);