Остановите WildFly 10 программно
Я перехожу с 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 ответа
Следующее должно работать (только обработать исключения):
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() });
Вы можете попробовать остановить сервер Wildfly, используя команды jboss-cli напрямую. Убедитесь, что сервер запущен и работает, пока вы хотите остановить его.
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();
}