50 lines
1.5 KiB
Java
50 lines
1.5 KiB
Java
package ${package};
|
|
|
|
import li.strolch.agent.api.StrolchAgent;
|
|
import li.strolch.agent.api.StrolchBootstrapper;
|
|
import li.strolch.runtime.configuration.StrolchEnvironment;
|
|
import li.strolch.utils.helper.StringHelper;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
public class Main {
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(Main.class);
|
|
private static final String APP_NAME = "${appName}";
|
|
|
|
private static StrolchAgent agent;
|
|
|
|
public static void main(String[] args) throws Throwable {
|
|
|
|
logger.info("Starting " + APP_NAME + "...");
|
|
long start = System.currentTimeMillis();
|
|
try {
|
|
// find environment from ENV.properties
|
|
String env = StrolchEnvironment.getEnvironmentFromResourceEnv(Main.class);
|
|
|
|
// and now start by system properties user.dir
|
|
StrolchBootstrapper bootstrapper = new StrolchBootstrapper(Main.class);
|
|
Main.agent = bootstrapper.setupByUserDir(env, "runtime");
|
|
Main.agent.initialize();
|
|
Main.agent.start();
|
|
|
|
} catch (Throwable e) {
|
|
logger.error("Failed to start " + APP_NAME + " due to: " + e.getMessage(), e);
|
|
throw e;
|
|
}
|
|
|
|
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
|
try {
|
|
Thread.sleep(200);
|
|
System.out.println("Shutting down ...");
|
|
Main.agent.stop();
|
|
Main.agent.destroy();
|
|
} catch (InterruptedException e) {
|
|
logger.error("Failed to stop " + APP_NAME + " due to " + e.getMessage(), e);
|
|
}
|
|
}));
|
|
|
|
long took = System.currentTimeMillis() - start;
|
|
logger.info("Started " + APP_NAME + " in " + (StringHelper.formatMillisecondsDuration(took)));
|
|
}
|
|
} |