X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.launcher%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcli%2FSlcMain.java;h=32c3ce90660f3c8ffc87a745e5b9eb153e1a7c0c;hb=11a9d0e8d3e9f610d0546463cfaf07ae884cb249;hp=c4193369a0b172b3b66eb165503538a1b43f005d;hpb=8984de0250fe9a165729db8f3a7762128549d03d;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.launcher/src/main/java/org/argeo/slc/cli/SlcMain.java b/runtime/org.argeo.slc.launcher/src/main/java/org/argeo/slc/cli/SlcMain.java index c4193369a..32c3ce906 100644 --- a/runtime/org.argeo.slc.launcher/src/main/java/org/argeo/slc/cli/SlcMain.java +++ b/runtime/org.argeo.slc.launcher/src/main/java/org/argeo/slc/cli/SlcMain.java @@ -18,6 +18,9 @@ import org.argeo.slc.SlcException; import org.argeo.slc.logging.Log4jUtils; import org.argeo.slc.runtime.SlcExecutionContext; import org.argeo.slc.runtime.SlcRuntime; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.support.FileSystemXmlApplicationContext; public class SlcMain { public enum Mode { @@ -168,6 +171,32 @@ public class SlcMain { System.exit(1); } } + // Agent + else if (mode.equals(Mode.agent)) { + if (runtimeStr == null) + runtimeStr = "agent.xml"; + final ConfigurableApplicationContext applicationContext = new FileSystemXmlApplicationContext( + "agent.xml"); + applicationContext.start(); + log.info("SLC Agent context started."); + + Thread shutdownHook = new Thread("SLC agent shutdown hook") { + public void run() { + applicationContext.stop(); + applicationContext.close(); + log.info("Closed agent application context."); + } + }; + Runtime.getRuntime().addShutdownHook(shutdownHook); + + while (applicationContext.isActive()) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // silent + } + } + } } public static void printUsage() {