gpt4 book ai didi

java - 从外部脚本启动/停止 java 应用程序

转载 作者:行者123 更新时间:2023-12-01 23:39:30 25 4
gpt4 key购买 nike

我有一个独立的 Java 应用程序。目前,我正在使用启动脚本运行这个Java应用程序,即Windows中的startApplicatoin.bat和Linux中的startApplicatoin.sh,它设置类路径,然后执行:java -classpath。

现在我必须添加 stopApplication.bat 和 stopApplication.sh 脚本。此停止脚本必须正常关闭/关闭此 Java 应用程序。

为了实现这一目标,我计划采取以下步骤:

1. 当我的 java 应用程序运行时,它将把启动的应用程序的进程 ID 存储在一个文件中,即存储在已知文件 myapplication.pid 中。

看起来 ManagementFactory.getRuntimeMXBean().getName() 调用将在 Linux 和 Windows 上运行以获取进程 ID。所以我将通过这种方式收集进程ID并将其存储在指定的文件myapplication.pid中。

2. 然后,当运行停止应用程序脚本时,该脚本将向 myapplication.pid 文件指定的进程 ID 发出“终止”请求。

对于 Windows,我将运行“taskkill”命令来停止此应用程序。对于 Linux 环境,“kill”命令将达到此目的。

在我的java代码中,我将添加一个addShutdownHook,它将启用我想要运行的正常关闭操作,即在该程序停止之前我将处理我想要保留的任何内容。

http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#addShutdownHook%28java.lang.Thread%29

现在我想做一个健全性检查,以确保我的想法是正确的。或者有更好的方法来做到这一点。任何建议表示赞赏。提前致谢。

最佳答案

如果您想要“优雅”关闭,那么在长时间运行的进程中打开一个套接字并让“停止”脚本连接到它并发出关闭命令可能更实用(并且更容易跨平台)命令;这甚至可以通过 JMX 实现,具体取决于应用程序的整体结构。 “内联”而不需要与操作系统交互的方法通常更容易推理和测试。

关于java - 从外部脚本启动/停止 java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18172577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com