我使用JBoss 7.1.1.Final。在这里,我有一个创业单身人士。在启动时我初始化一些东西,在关机时我终止/清理我的东西。 但是现在我发现,终止我可以做任何我想做的1秒!一秒钟之后,应用程序就会消失,有时1秒的时间不足以进行真正的清理。
代码:
@Singleton
@Startup
public class ShutdownTest {
@PostConstruct
public void initialize() {
LOG.info("Initialization");
}
@PreDestroy
public void terminate() {
for(;;) {
LOG.info("loop in terminate...");
Tools.sleepQuietly(100); // just sleeps for 100 milliseconds
}
}
}
这个类确实在启动时报告了初始化,但在终止时我输出了10倍,之后,JBoss就死了。
即使某些PreDestroy方法仍在运行,我怎样才能配置这个时间,直到JBoss自杀为止?
目前我从Eclipse启动和停止JBoss(Poller设置为Web端口)。
答案 0 :(得分:0)
在关闭事件中没有办法在JBoss 7上执行此操作(基于JBoss / WildFly团队的this answer的Tomaz Cerar)。
在Windows上,我可以确认没有办法做到这一点(我假设Linux也是如此)。
我发现如果在关闭服务器之前停止应用程序,它会起作用。即:登录到webconsole,导航到Runtime(右上角的Tab) - >管理部署(菜单) - >按钮“禁用”为您的应用程序。
在WildFly 8中,您可以获得关闭的“超时”选项。请参阅this post了解如何使用它。