调试时如何使eclipse优雅地关闭dropwizard?
我正在试验Dropwizard(,),并对它与IDE集成的简单性印象深刻。要启动我的DooWrand应用程序,我只需使用主方法和“调试为……java应用程序”来查找类,我在路上。停止应用程序同样简单,只需从调试视图中单击红色的“终止”按钮。然而,我注意到,当我以这种方式停止托管类的stop()方法时,我没有到达断点 当Dropwizard直接在eclipse的调试器中运行时,如何让它正常关闭调试时如何使eclipse优雅地关闭dropwizard?,eclipse,dropwizard,Eclipse,Dropwizard,我正在试验Dropwizard(,),并对它与IDE集成的简单性印象深刻。要启动我的DooWrand应用程序,我只需使用主方法和“调试为……java应用程序”来查找类,我在路上。停止应用程序同样简单,只需从调试视图中单击红色的“终止”按钮。然而,我注意到,当我以这种方式停止托管类的stop()方法时,我没有到达断点 当Dropwizard直接在eclipse的调试器中运行时,如何让它正常关闭 @Override public void run( BlogConfiguration configu
@Override
public void run( BlogConfiguration configuration, Environment environment ) throws Exception {
...
MongoManaged mongoManaged = new MongoManaged( mongo );
environment.manage( mongoManaged );
...
}
MongoManager的stop()中的断点永远不会被命中
public class MongoManaged implements Managed {
private final MongoClient mongo;
public MongoManaged( MongoClient mongo ) {
this.mongo = mongo;
}
@Override
public void start() throws Exception {
}
@Override
public void stop() throws Exception {
if ( mongo != null ) {
mongo.close();
}
}
}
如果您使用这个java特性有帮助吗
// In case vm shutdown
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run()
{
// what should be closed if forced shudown
// ....
LOG.info(String.format("--- End of ShutDownHook (%s) ---", APPLICATION_NAME));
}
});
只需在第一个断点之前添加它。这是如何被否决的?哎呀。很难对付的人群,有帮助吗?你的观察结果是什么?根据我的经验,eclipse以这样一种方式终止了进程,即关闭钩子被跳过。