问题是,我停止了Dropwizard应用程序(通过ctrl + c),我在主类中插入了一个Shutdown Hook,以便在关机前做一些事情。但是现在,在我可以做我想做的事情之前,应用程序的ServerConnector已关闭。
有一个轮询服务(轮询我的一个资源),我需要告诉他们,该应用程序将很快停止以防止出现一些问题。在资源停止之前我需要至少15秒。
有些想法如何解决这个问题?
答案 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>
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);