相关疑难解决方法(0)

Spring是否有关闭进程来放置清理代码?

当我的春季网络应用程序关闭时,是否有一个事件我可以以某种方式连线,我可以执行一些清理代码来清空一些池等.

java spring

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

为什么spring boot应用程序不能正常退出?

我在Intellij(Linux上的13.1.5)上使用bootRun任务运行一个spring启动应用程序,我试图在生命周期回调中关闭一个监听器线程,但是当在Intellij中停止应用程序时,我发现我的监听器线程仍然是运行和记录.

  1. 在控制台中:

    "与目标虚拟机断开连接,地址:...,传输:'socket'6:39:22 AM:外部任务执行完成'bootRun'."

  2. 然后我做了ps grep并杀了进程,然后才控制台打印:

    "2016-03-28 06:39:59.606 INFO 7740 --- [Thread-1] ationConfigEmbeddedWebApplicationContext:关闭org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@657617e6:... 2016-03-28 06:39: 59.611 INFO 7740 --- [Thread-1] osjeaAnnotationMBeanExporter:在关闭时取消注册JMX暴露的bean"

我的问题:

  1. 为什么要停止Intellij中的app而不关闭应用程序上下文?
  2. 根据Doc,Spring Web应用程序自动注册关闭钩子.但是我试过@PreDestroy,destroMethod,并实现了LifeCycle,为什么没有人被调用?

java spring spring-mvc intellij-idea spring-boot

5
推荐指数
0
解决办法
2043
查看次数

运行SpringBootApplication PostConstruct和PreDestroy

我在docker容器中运行spring应用程序时遇到了麻烦(spring和docker在我的环境中都有最新版本).我希望为应用程序类AnalysisServiceBootstrap提供健康的生命周期:在创建AnalysisServiceBootstrap之后立即使用方法start()运行初始化代码,并在销毁AnalysisServiceBootstrap之前运行方法stop()(我想在某人时运行stop()代码)停止申请).

我有以下代码:

package com.pack;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

@SpringBootApplication
public class AnalysisServiceBootstrap {

    // called OK on docker "start <containerId>"
    @PostConstruct
    public void start() throws Exception {
        // some init code
    }

    // NOT called on "docker stop <containerId>"
    @PreDestroy
    public void stop() {
       // some destroy code
    }

    public static void main(String[] args) {
        SpringApplication.run(AnalysisServiceBootstrap.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我无法在docker stop上运行方法stop().我尝试了stackoverflow和其他资源提供的几种方法,但所有这些方法都不适用于我.

我很乐意拥有适合您的代码(不仅仅是一些时尚建议).

这里几乎是我的docker文件:

FROM *********:6556/service-jvm

ARG SERVICE_JAR_FILE

ENV SERVICE_NAME service
ENV HTTP_PORT …
Run Code Online (Sandbox Code Playgroud)

java spring sigkill docker spring-boot

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×3

spring ×3

spring-boot ×2

docker ×1

intellij-idea ×1

sigkill ×1

spring-mvc ×1