![](/img/trans.png)
[英]How can I use Ant to build a single executable .jar that has dependency .jars in it in a /lib dir in the .jar?
[英]How can I check if executable JAR has started/finished running?
我有多个可执行的 JAR,我们称它们为task1.jar
、 task2.jar
、 task3.jar
等……它们主要访问数据库并在服务器上做家务。
它们由 cron 作业运行,一个接一个,每天一大早。 crob 作业相隔大约 15 分钟。
crob 工作只需调用:
java -jar taskX.jar
根据数据库上的数据,它们完成的持续时间会有所不同。
任务执行不得重叠。 否则当他们同时访问数据库时,服务器会崩溃。 当一项任务运行时间过长并且在另一项任务开始之前尚未完成时,曾经发生过这种情况。
所以我的问题是......无论如何检查一个 JAR 已经开始或完成,以便下一个 JAR 可以延迟?
我最好使用 Java 方法解决这个问题,而不是更改我访问受限的服务器上的任何配置。
编辑:@mksmanjit 对不起,我之前没有提到。 还有一个并发症 - 并非所有这些都每天运行。 例如, task1.jar
和task3.jar
可能每天运行一次, task2.jar
可能每两天运行一次, task4.jar
可能每周一、三、五等运行一次……所以情况会变得相当复杂。
我看到的几种方法!
让所有 JAR(或任务)将Logs
写入一个common
或separate
的日志文件中。 (如果您只想捕获次要细节,例如开始时间、停止时间、结果等,通常可行)假设您保留的格式是手动可读的。
根据上面的建议,在DB
中创建一个Table
来跟踪任务活动以及任务名称,它的详细信息,如触发者、开始时间、结束时间、结果等
或者,创建数据库Triggers
来监视数据库表上的事件(例如写入或读取),并且每当您的任务执行时,触发器也会根据您希望触发器执行的数据库操作执行,例如发送e-mail
、写入表、打印简单日志
让 JAR(或任务)也在控制台上打印日志,以防万一假设它们被设计为在运行时从任何控制台或 UI 中查看!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.