1

We've got a thread checking if our database is ready. The thread is exited when the database is available. However in some case the Wildfly server is shutting down before a database is ready. In that case, Wildfly won't shutdown since this thread is still alive.

We're looking for a method to notify this thread or a possiblity to check the state (running, shutting down, starting and so on) of the Wildfly server in order to stop that thread.

Any idea?

Thomas
  • 8,357
  • 15
  • 45
  • 81

1 Answers1

2

You should probably set the Thread.setDaemon(true).

As far as detecting if WildFly is running you could try to connect a ModelControllerClient and check the state of the server. If it doesn't connect it's likely down. Or at least the management connection is down.

Example:

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;
    }
}
James R. Perkins
  • 16,800
  • 44
  • 60