我们有一个线程检查我们的数据库是否准备好。当数据库可用时退出线程。然而,在某些情况下,Wildfly 服务器在数据库准备好之前就关闭了。在这种情况下,Wildfly 不会关闭,因为该线程仍然存在。
我们正在寻找一种方法来通知此线程或检查 Wildfly 服务器的状态(运行、关闭、启动等)以停止该线程。
任何的想法?
我们有一个线程检查我们的数据库是否准备好。当数据库可用时退出线程。然而,在某些情况下,Wildfly 服务器在数据库准备好之前就关闭了。在这种情况下,Wildfly 不会关闭,因为该线程仍然存在。
我们正在寻找一种方法来通知此线程或检查 Wildfly 服务器的状态(运行、关闭、启动等)以停止该线程。
任何的想法?
您可能应该设置Thread.setDaemon(true)
.
至于检测 WildFly 是否正在运行,您可以尝试连接 aModelControllerClient
并检查服务器的状态。如果它没有连接,它可能会关闭。或者至少管理连接已关闭。
例子:
public static boolean isServerRunning() throws IOException {
try (final ModelControllerClient client = ModelControllerClient.Factory.create(InetAddress.getLocalHost(), 9990)) {
final ModelNode address = new ModelNode().setEmptyList();
final ModelNode op = Operations.createReadAttributeOperation(address, "server-state");
final ModelNode result = client.execute(op);
if (Operations.isSuccessfulOutcome(result)) {
final String state = Operations.readResult(result).asString();
switch (state) {
case "running":
case "reload-required":
case "restart-required":
return true;
}
}
return false;
}
}