当我调试时,如何让eclipse正常关闭dropwizard?

时间:2014-03-28 23:20:15

标签: eclipse dropwizard

我正在尝试使用Dropwizard(https://github.com/robertkuhar/dropwiz_get_starthttps://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();
        }
    }
}

1 个答案:

答案 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));
    }
});

只需在第一个断点之前添加它。