【问题标题】:Shutdown hook/event in Wildfly/JBossWildfly/JBoss 中的关闭挂钩/事件
【发布时间】:2014-08-01 07:32:27
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    你应该设置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;
        }
    }
    

    【讨论】:

    • 难道没有可以直接注入应用的@Resource吗?
    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 2015-01-30
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2014-06-23
    • 2010-09-15
    • 2013-04-01
    相关资源
    最近更新 更多