2017-09-25 138 views
2

我正在從JBoss 6.1.0_final遷移到WildFly 10.在某些情況下,我想停止服務器。像:以編程方式阻止WildFly 10

if (condition == true) 
    System.exit(1); 

上面的代碼在JBoss中工作正常,它立即關閉服務器。 但是,當我在WildFly10執行相同的操作時,服務器不會立即停止。

它發送關機信號,然後解除綁定datasource然後JMX等。我發現可以通過MBeans完成,但不能在這裏工作:https://developer.jboss.org/thread/198579。這給像一些錯誤:

PARAMS和描述有不同的長度

我要立即停止我的WildFly10服務器。任何人都做過這樣的事情?

+0

爲什麼不使用jboss-cli或管理API呢? – ehsavoie

+0

我想以編程方式停止它。 –

+0

嗡嗡聲,這是如何調用一個休息API或使用客戶端助手Java代碼不是一個程序? – ehsavoie

回答

1

以下應工作(只處理異常):

MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); 
ObjectName objectName = new ObjectName("jboss.as:management-root=server"); 
mBeanServer.invoke(objectName, "shutdown", new Object[] { false, 0 }, 
     new String[] { boolean.class.getName(), int.class.getName() }); 
+0

以上代碼,錯誤消失,服務器停止提前處理。但java仍然在運行,因爲所有與ActiveMQ相關的線程都已啓動。並在1000毫秒後超時異常拋出。而服務器仍在運行。 :-( –

0

您可以嘗試停止使用直接的jboss-CLI命令Wildfly服務器。確保服務器在您想要停止的狀態下運行並運行。

try { 
    String jbossBinDir = System.getProperty("jboss.server.base.dir").replace("standalone", "bin"); 
    Runtime.getRuntime().exec(jbossBinDir+"/" + "jboss-cli.bat --connect --controller=192.168.1.2 -c command=:shutdown"); 
    } 
    catch(IOException e) 
    { 
     e.printStackTrace(); 
    } 
相關問題