2014-06-11 80 views
1

我們已經有了一個線程檢查,如果我們的數據庫已經準備就緒。線程在數據庫可用時退出。但是在某些情況下,在數據庫準備就緒之前,Wildfly服務器正在關閉。在這種情況下,Wildfly將不會關閉,因爲此線程仍然存在。關機鉤/事件Wildfly/JBoss的

我們正在尋找告知該線或Wildfly服務器的方法可行,檢查狀態(運行,關閉,啓動等),以阻止該線程的方法。

有什麼想法?

回答

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

是不是有可能被直接注入到應用程序的任何@Resource? –