相关疑难解决方法(0)

如何在Eclipse启动的进程上执行shutdown hook

我的应用程序中有一个关闭钩子(使用创建Runtime.getRuntime().addShutdownHook).但是,如果我从Eclipse中启动应用程序,当它关闭时,关闭挂钩不会执行.

我认为这是因为Eclipse向进程发送了一个强制终止信号的等价物,这不会导致关闭挂钩执行(相当于Windows上的taskkill/F或Linux上的kill -p),尽管我我不是很确定.

有谁知道怎么解决这个问题?我正在运行Windows(Vista),我觉得它可能是Windows特定的问题,但我不确定.

java eclipse shutdown

53
推荐指数
4
解决办法
4万
查看次数

Eclipse中已终止的Spring Boot应用程序 - 未调用Shutdown挂钩

我有一个Spring Boot + Spring Data Redis/KeyValue项目.我设置了一个Spring配置文件来运行嵌入了所有依赖项的应用程序.所以在启动时,我启动了一个嵌入式Redis服务器.当我在Eclipse中启动时,一切正常,除了我希望在停止Spring Boot应用程序时停止Redis服务器.所以我设置了几个关闭钩子,但是当我从Eclipse终止应用程序时它们没有被调用.

他们是关于SO的类似问题,我创建了这个问题,希望有一个Redis解决方案.这些类似的问题也没有特定于Spring Boot.

我尝试了很多东西:

  • 春季靴子ExitCodeGenerator;
  • DisposableBean;
  • @PreDestroy;
  • 我试过ShutdownHook(在@ mp911de的回答之后)

他们都不被称为.

也许有一个Redis选项,超时,保持活着..我不知道的盒子外面的东西? 当我的Spring Boot应用程序突然停止时,如何确保Redis服务器停止

=>我看到这个嵌入式Redis用于弹簧启动,但@PreDestroy在意外杀死应用程序时才被调用.

以下是一些类似的问题:

我还在eclipse.org上看到这篇文章,讨论在从eclipse停止应用程序时如何调用shutdown hook:正常关闭Java应用程序


这是我的所有相关代码:

用于在启动时启动嵌入式 Redis服务器的组件(我尝试将其停止!!):

@Component
public class EmbeddedRedis implements ExitCodeGenerator, DisposableBean{

    @Value("${spring.redis.port}")
    private int redisPort;

    private RedisServer redisServer;

    @PostConstruct
    public void startRedis() throws IOException {
        redisServer = new RedisServer(redisPort);
        redisServer.stop();
        redisServer.start();
    }

    @PreDestroy
    public void stopRedis() { …
Run Code Online (Sandbox Code Playgroud)

java eclipse spring redis spring-boot

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

eclipse ×2

java ×2

redis ×1

shutdown ×1

spring ×1

spring-boot ×1