问题是,我停止了 Dropwizard 应用程序(通过 ctrl + c)并且我在主类中插入了一个 Shutdown Hook 来在关闭之前做一些事情。但是现在应用程序的 ServerConnector 已经关闭,然后我才能做我想做的事情。

有一个轮询服务(轮询我的一个资源),我需要告诉他们,该应用程序将很快关闭以防止出现一些问题。我需要至少 15 秒才能资源下降。

一些想法如何解决这个问题?

最佳答案

您可以使用生命周期 Hook 来管理某些资源。

public class ManagedObject implements Managed {

    private final Object obj;

    public ManagedObject(Object obj) {
        this.obj = obj;
    }

    @Override
    public void start() throws Exception {
        // Do something to start the object
    }

    @Override
    public void stop() throws Exception {
        // Do something to stop the object
    }
}

然后在环境上注册
ManagedObject myManagedObject = new ManagedObject(obj);
environment.lifecycle().manage(myManagedObject);

关于java - Dropwizard关机钩,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31288721/

10-09 03:40