strolch-maven-archetypes/li.strolch.mvn.archetype.main/src/main/resources/archetype-resources/src/main/java/Main.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)));
}
}