首页 文章

spring boot tomcat终止

提问于
浏览
6

我有完全相同的问题:Terminating mvn spring-boot:run doesn't stop tomcat

那里的答案说它只发生在Windows上,但事实并非如此 . 我正在使用Intellij在OSX上运行spring boot,当我停止spring boot应用程序时,嵌入式tomcat仍在运行 . 这是来自spring boot教程的简单示例应用程序 . 有解决方案吗

5 回答

  • 6

    我遇到了同样的问题,因此我必须检查此页面上的所有解决方案以及相关的解决方案 . 没有人对我有好处 . 这就是我进行小规模研究的原因,看起来捕获的TCP端口出现问题只是因为Gradle和mvn都不了解TCP端口的子操作 .

    所以不要杀死进程只需使用命令:

    $ gradlew –stop
    

    (我希望 mvn 同样存在)

    此命令正常关闭由Gradle启动的守护程序并释放由Tomcat端口捕获的守护程序 .

  • 1

    我在MAC上的intellij中有完全相同的问题(spring boot 1.1.6.RELEASE) .

    我通过使用 spring 启动 Actuator 来解决它,它提供了一个休息终点(Post)来关闭应用程序:

    localhost:port/shutdown
    

    这可以通过命令行调用:例如 curl -X POST localhost:port/shutdown

    启用spring boot Actuator 添加以下编译dep:

    org.springframework.boot:spring-boot-starter-actuator
    

    我创建了一个gradle任务bootStop,它为我运行这个cmd . 你可以在maven中做同样的事情,或者你可以从cmd行(也通过intellij终端)调用它

    特别是如果你想使用调试,你应该在gradle / maven任务中包含上面给出的curl cmd .

    见工作示例(gradle)here

  • 2

    以下是 spring 启动 Actuator 的maven示例,用于配置HTTP endpoints 以关闭Spring启动Web应用程序:

    1.Maven Pom.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    

    2.application.properties:

    #No auth  protected 
    endpoints.shutdown.sensitive=false
    
    #Enable shutdown endpoint
    endpoints.shutdown.enabled=true
    

    列出所有 endpoints here

    3.发送一个post方法来关闭app:

    curl -X POST localhost:port/shutdown
    
  • 0

    previous回答之后,此属性现在已弃用,因此请将其替换为:

    management.endpoint.shutdown.enabled=true
    
  • 1

    更简单的解决方案是创建“Spring Boot”配置并使用它来启动应用程序而不是“Gradle”配置 . “Spring Boot”配置不会遇到此问题 .

相关问题