Dropwizard关机钩

时间:2015-07-08 09:31:50

标签: java dropwizard shutdown-hook

问题是,我停止了Dropwizard应用程序(通过ctrl + c),我在主类中插入了一个Shutdown Hook,以便在关机前做一些事情。但是现在,在我可以做我想做的事情之前,应用程序的ServerConnector已关闭。

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

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

2 个答案:

答案 0 :(得分:6)

添加Dropwizard Task,它将更改您的轮询资源将用于响应的静态字段的状态(或者您想要传递数据)。

curl -X POST http://dw.example.com:8081/tasks/shutdown

然后编写一个bash脚本,它将卷曲到任务

System.exit(0)

  • 可能不建议这样做(人们不喜欢Thread.sleep(timeoutSeconds * 1000); System.exit(0) )但您可以添加以下内容来执行方法:

kill -SIGINT <pid>

  • 或者等待并在bash脚本中杀死dropwizard应用程序。

THREE.GeometryUtils.randomPointsInGeometry( geometry, n ) THREE.GeometryUtils.randomPointsInBufferGeometry( geometry, n ) THREE.GeometryUtils.randomPointInFace( face, geometry )

答案 1 :(得分:4)

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

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);