Wildfly / JBoss中的关闭钩子/事件

时间:2014-06-11 09:41:49

标签: java-ee jboss jboss7.x wildfly wildfly-8

我们有一个线程检查我们的数据库是否准备就绪。当数据库可用时退出该线程。但是在某些情况下,Wildfly服务器在数据库准备好之前就会关闭。在这种情况下,Wildfly不会关闭,因为这个线程仍然存在。

我们正在寻找一种方法来通知此线程或可能检查Wildfly服务器的状态(运行,关闭,启动等)以停止该线程。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您应该设置Thread.setDaemon(true)

至于检测WildFly是否正在运行,您可以尝试连接ModelControllerClient并检查服务器的状态。如果它没有连接它可能会失败。或者至少管理连接已关闭。

示例:

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;
    }
}