以编程方式阻止WildFly 10
问题描述:
我正在从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服务器。任何人都做过这样的事情?
答
以下应工作(只处理异常):
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毫秒后超时异常抛出。而服务器仍在运行。 :-( –
答
您可以尝试停止使用直接的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();
}
为什么不使用jboss-cli或管理API呢? – ehsavoie
我想以编程方式停止它。 –
嗡嗡声,这是如何调用一个休息API或使用客户端助手Java代码不是一个程序? – ehsavoie