以编程方式停止WildFly 10

时间:2017-09-25 13:33:27

标签: java wildfly wildfly-10 mbeans

我正在从JBoss 6.1.0_final迁移到WildFly 10.在某种情况下,我想停止我的服务器。像:

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

上面的代码在JBoss中工作正常,它会立即关闭服务器。 但是当我在WildFly10中执行相同操作时,服务器不会立即停止。

它发送关闭信号,然后是未绑定的datasource,然后是JMX,依此类推。我发现可以通过MBeans完成,但不能在这里工作:https://developer.jboss.org/thread/198579。这会产生一些错误:

  参数和描述有不同的长度

我想立即停止我的WildFly10服务器。有谁做过这样的事情?

2 个答案:

答案 0 :(得分: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() });

答案 1 :(得分: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();
    }