Java 以编程方式停止WildFly 10

Java 以编程方式停止WildFly 10,java,wildfly,wildfly-10,mbeans,Java,Wildfly,Wildfly 10,Mbeans,我正在从JBoss6.1.0_final迁移到WildFly 10。在特定条件下,我想停止我的服务器。比如: if (condition == true) System.exit(1); 上面的代码在JBoss中运行良好,它会立即关闭服务器。 但是,当我在WildFly10中执行相同操作时,服务器不会立即停止 它发送关闭信号,然后解除绑定数据源然后JMX等等。我发现可以由MBean完成,但不能在此处工作:。这会产生一些错误,如: 参数和描述具有不同的长度 我想立即停止我的WildFly

我正在从JBoss6.1.0_final迁移到WildFly 10。在特定条件下,我想停止我的服务器。比如:

if (condition == true) 
   System.exit(1);
上面的代码在JBoss中运行良好,它会立即关闭服务器。 但是,当我在
WildFly10
中执行相同操作时,服务器不会立即停止

它发送关闭信号,然后解除绑定
数据源
然后
JMX
等等。我发现可以由MBean完成,但不能在此处工作:。这会产生一些错误,如:

参数和描述具有不同的长度

我想立即停止我的WildFly10服务器。有人做过这样的事吗

以下操作应该有效(只需处理例外情况):


您可以尝试直接使用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();
    }

使用上述代码,错误消失,服务器停止前面的处理。但是java仍然在运行,因为所有与ActiveMQ相关的线程都已启动。1000毫秒后,超时异常抛出。并且服务器仍在运行:-(为什么不使用jboss cli或管理API呢?我想以编程方式停止它。哼,调用rest API或使用客户端帮助程序java代码而不是程序是怎么回事?
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();
    }