我正在尝试使用Dropwizard(https://github.com/robertkuhar/dropwiz_get_start,https://github.com/robertkuhar/dropwiz_mongo_demo),并且对我与IDE集成的难易程度印象深刻。要启动我的dropwizard应用程序,我只需找到带有main方法的类和“Debug As ... Java Application”,我就在路上。停止应用程序同样简单,只需单击Debug视图中的红色“Terminate”按钮即可。但是,我注意到,当我以这种方式停止时,我没有进入我的托管类的stop()方法中的断点。
当直接在eclipse的Debugger中运行时,如何让Dropwizard正常关机?
@Override
public void run( BlogConfiguration configuration, Environment environment ) throws Exception {
...
MongoManaged mongoManaged = new MongoManaged( mongo );
environment.manage( mongoManaged );
...
}
MongoManage的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();
}
}
}
答案 0 :(得分:0)
使用这个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));
}
});
只需在第一个断点之前添加它。