时间问题并不重要。但是我想知道如何对已经运行的java程序进行一些外部调用。
一个简单的例子:一个对文件进行一些处理的无限循环。
如果我有上面描述的这样一个程序,我如何才能编写一个shell/perl/python/etc脚本,允许我停止、启动、暂停java程序?
发布于 2014-03-03 15:19:58
这并不容易,但您可以使用RMI访问公开API以控制应用程序的控制类。
发布于 2014-03-03 15:18:15
除非您的Java应用程序显式地允许外部访问它(例如从RMI、SOAP/REST-WebService、MQ、.)没有直接访问Java程序的方法。
最简单(但肯定不是最好的)解决方案是在两者之间使用文件系统。shell脚本创建一个由Java应用程序获取的文件。例如,创建一个文件暂停;如果应用程序看到该文件存在,它将删除它并暂停。停止应用程序就是简单地扼杀了这个过程。
发布于 2014-03-03 15:21:39
最简单的方法是编写一个脚本,在'start‘上启动程序,然后在'stop’上向Java进程发送一个SIGTERM信号。您的代码可以相应地处理该信号,以便清除关机。
如果只是一个开始/停止脚本场景,这就足够了。对于更先进的行为,其他答案提到了其他需要建立联系的备选方案。
https://stackoverflow.com/questions/22150392
复制相似问题