【问题标题】:How can I make eclipse gracefully shutdown dropwizard when I debug?调试时如何让eclipse优雅地关闭dropwizard?
【发布时间】:2023-04-03 17:30:01
【问题描述】:

我正在尝试使用 Dropwizard(https://github.com/robertkuhar/dropwiz_get_starthttps://github.com/robertkuhar/dropwiz_mongo_demo),并且对与我的 IDE 集成的轻松程度印象深刻。要启动我的 dropwizard 应用程序,我只需找到带有 main 方法和“Debug As...Java Application”的类,然后就可以了。停止应用程序同样简单,只需单击 Debug 视图中的红色“Terminate”按钮。但是,我注意到,当我以这种方式停止托管类的 stop() 方法时,我没有到达断点。

当 Dropwizard 直接在 Eclipse 的 Debugger 中运行时,如何让其正常关机?

@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();
        }
    }
}

【问题讨论】:

  • 这是如何被否决的?哎呀。艰难的人群。

标签: eclipse dropwizard


【解决方案1】:

如果你使用这个 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));
    }
});

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 2015-06-25
相关资源
最近更新 更多