gpt4 book ai didi

java - 如何从 Bash shell 脚本优雅地关闭 Java 服务?

转载 作者:太空狗 更新时间:2023-10-29 11:09:24 25 4
gpt4 key购买 nike

我正在将 Java REST 服务从“传统”方式(作为部署到 Multi-Tenancy 应用程序服务器 (Tomcat) 的 servlet 兼容 .war)转换为更简单的嵌入式设置,其中有一个简单的启动嵌入式 http 服务器 (Grizzly+Jersey) 的 Java 主类。缺少的一 block 是服务包装器。我可以通过执行“java -jar myservice.jar”手动运行该服务,但我想将其实现为适当的 Linux 后台服务。

通常,这是使用您放入/etc/init.d 中的简单 Bash shell 脚本来完成的。我看过一些 super 简单的示例,但它们通过终止进程而不是正常关闭来实现关闭。我也见过一些商业工具来处理这个问题,但这个任务似乎太简单了,不涉及商业工具。

我的第一个猜测是在第二个端口上添加一个单独的 super 简单的 REST 服务,用于监听关闭请求并让/etc/init.d Bash shell 脚本以这种方式发送关闭请求。

这个问题是否有更好或更标准的解决方案?

最佳答案

kill 没问题(如果不是 kill -9),你应该只实现关闭钩子(Hook)来优雅地停止一切

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

@Override
public void run() {
//TODO stop web server and close db connection if needed

}
}));

关于java - 如何从 Bash shell 脚本优雅地关闭 Java 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20645295/

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