gpt4 book ai didi

java - 从命令行停止 jvm 以正常关闭

转载 作者:行者123 更新时间:2023-12-01 10:09:05 25 4
gpt4 key购买 nike

我正在为 Stilts stomp server 做一些 Poc 。需要防止服务器 jvm 终止并通过另一个 jvm 来完成。这是一个代码片段

 public static void main(String[] args) {
try {
log.debug("Starting server...");
StompServer<MockStompProvider> server = new StompServer<MockStompProvider>();
server.setStompProvider( new MockStompProvider() );
server.addConnector( new InsecureConnector() );
server.start();
while (true) {
Thread.sleep(200000);
}
} catch (Exception ex) {
log.error("Exception ", ex);
}
}

有两个要求。

  1. 有没有其他方法可以在不使用 while 循环的情况下防止上述 jvm 终止。
  2. 我想使用 java -jar server.jar -- stop 等命令停止 jvm,例如像 jetty 这样的服务器。 Jetty 使用端口并监听停止请求的信号。有什么简单的办法吗?

第二个选项可以是使用 AnchorFile,在启动 jvm 时创建文件并监视文件存在,然后使用 stop jvm 删除该文件。

最佳答案

你可以使用 ServerSocket 来做到这一点

static final int PORT = Integer.getInteger("port", 65432);
public static void main(String[] args) {
if (args.length > 0) {
new Socket("localhost", PORT);
return;
}

try {
log.debug("Starting server...");
StompServer<MockStompProvider> server = new StompServer<MockStompProvider>();
server.setStompProvider( new MockStompProvider() );
server.addConnector( new InsecureConnector() );
server.start();
new ServerSocket(PORT).accept();

} catch (Exception ex) {
log.error("Exception ", ex);
}
}

关于java - 从命令行停止 jvm 以正常关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36261406/

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