2017-09-25 65 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(); 
    } 
相关问题