我目前正在寻找一种以编程方式停止在 wildfly 上部署的方法。
背景:
- 应用程序在其启动阶段使用 MBean 进行一些健康检查。
- 如果应用确定环境无效是因为缺少某些资源,则它需要停止自己的部署。
原来的样子:
- 该应用程序以前在 JBoss 4 上运行,只是使用 JMX 调用关闭命令停止了整个应用程序服务器。
- 如果此命令失败,它会使用 System.exit(1) 简单地终止整个 JVM。
目前的问题:
- 通过 JMX 调用 shutdown() 在 wildfly 上不起作用,因为当试图从已部署的应用程序中停止它时整个服务器挂起。
- System.exit() 也不会工作,因为 wildly 必须以任何方式捕获命令。
那么有谁知道如何从部署中停止服务器或停止部署过程或取消部署应用程序?
非常感谢!
最佳答案
我假设核心问题是在某些健康检查失败时停止部署过程。在应用程序启动期间抛出运行时异常足以完成这项工作。
@Startup
@Singleton
public class StartupBean {
@PostConstruct
public void start() {
//your checks
boolean check = doHealthCheck();
if(!check){
throw new RuntimeException("Your error message");
}
}
}
或
@Startup
@Singleton
public class StartupBean {
@PostConstruct
public void start() {
//your checks
boolean check = doHealthCheck();
if(!check){
throw new Error("Your error message");
}
}
}
关于java - 部署可以自行停止吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23678906/