我的主要领域是.Net,但最近我与Java有关。我必须在Java中创建一个shell实用程序,该实用程序可以在指定的持续时间后在后台读取少量数据库记录并运行,并进行进一步处理。这是一种调度程序。现在,我几乎不用担心:
如何使这项工作成为服务。我想通过shell脚本执行它,并且该实用程序应该开始运行。当然,控件应返回到调用脚本。
其次,最终我可能想停止运行此过程。如何实现呢?
我理解这些是基本问题,但我真的不知道从哪里开始以及哪种选择最适合我。
任何帮助/建议吗?
我会使用调度程序或服务来运行程序。但是,如果您希望使用bat文件并以编程方式执行此操作,那么我在下面概述了一种可能的方法:
在Java程序中,可以以编程方式获取PID,然后将其写入文件:
public static void writePID(String fileLocation) throws IOException
{
// Use the engine management bean in java to find out the pid
// and to write to a file
if (fileLocation.length() == 0)
{
fileLocation = DEFAULT_PID_FILE;
}
String pid = ManagementFactory.getRuntimeMXBean().getName();
if (pid.indexOf("@") != -1)
{
pid = pid.substring(0, pid.indexOf("@"));
}
BufferedWriter writer = new BufferedWriter(new FileWriter(fileLocation));
writer.write(pid);
writer.newLine();
writer.flush();
writer.close();
}
然后,您可以编写一个stop .bat文件,该文件将杀死Windows中正在运行的程序。您可以执行以下操作:
setlocal
IF EXIST app.pid FOR /F %%i in ('type app.pid') do TASKKILL /F /PID %%i
IF EXIST app.pid DEL app.pid
endlocal
当然,app.pid是上述Java方法编写的文件。
我不确定如何编写启动Java程序并在终止时恢复控制的脚本。我想看看是否有人对此有解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句