2

我使用 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(轮询器设置为 Web 端口)。

4

1 回答 1

0

在关闭事件中,无法在 JBoss 7 上执行此操作(基于JBoss / WildFly 团队的Tomaz Cerar的回答)。

在 Windows 上,我可以确认没有办法做到这一点(我假设对于 Linux 也是如此)。

我发现如果您在关闭服务器之前停止应用程序,它会起作用。即:登录到 web 控制台,导航到运行时(右上角的选项卡)-> 管理部署(菜单)-> 应用程序的“禁用”按钮。

在 WildFly 8 中,您可以获得关闭的“超时”选项。请参阅这篇文章了解如何使用它。

于 2015-02-03T09:30:30.997 回答