配置 HTTP 端点以关闭 spring 引导 Web 应用程序
configuring HTTP endpoint to shutdown a spring boot web application
我有一个 Spring 启动应用程序 运行。参考 优雅地关闭服务器,我在 pom.xml 和 application.properties 中包含了所有更改。
问题是当我在一个终端上 运行 spring 引导服务器(它按预期成功启动)并尝试使用命令关闭它: curl -X POST localhost:8000/shutdown
在另一个终端上,服务器仍然保持 运行。它没有关闭。在我的本地,当我点击这个关闭命令时,我没有看到任何日志或异常。
**
Can someone please help me to figure out, what is missing in my
configuration.
**
注意:当我尝试使用具有相同命令的 Jenkins 作业关闭服务器时(并且 运行 jenkins 服务器具有与本地相同的 pom 和属性),出现以下异常:{"timestamp":1515145896307,"status":500,"error":"Internal Server Error","exception":"java.lang.NoClassDefFoundError","message":"org/springframework/boot/actuate/endpoint/ShutdownEndpoint","path":"/shutdown"}
我的pom.xml如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.samples</groupId>
<artifactId>AllergiesConditions</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<!-- Generic properties -->
<java.version>1.7</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
</dependency>
<!-- Exclude Spring Boot's Default Logging -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
<build>
<finalName>AllergiesConditions</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
我的 application.properties 包括以下几行:
server.port=8000
endpoints.shutdown.sensitive=false
endpoints.shutdown.enabled=true
使用 1.5 版本的 spring 启动,我认为没有确定的关闭机制。
您可以查看此 link 并了解如何在您的应用程序中使用 jmx 或 http https://github.com/corentin59/spring-boot-graceful-shutdown 正确关闭。
祝你好运
回答我自己的问题:
实际上这是一个愚蠢的错误。我只是复制粘贴来自
没有真正理解它。
我在 application.properties
中添加了 server.contextPath=/AllergiesConditions
所以现在关机命令将变为:curl -X POST localhost:8080/AllergiesConditions/shutdown
我犯的另一个错误是,我没有post完整application.properties问题的描述,所以实际上没有人能提供帮助。
我有一个 Spring 启动应用程序 运行。参考 优雅地关闭服务器,我在 pom.xml 和 application.properties 中包含了所有更改。
问题是当我在一个终端上 运行 spring 引导服务器(它按预期成功启动)并尝试使用命令关闭它: curl -X POST localhost:8000/shutdown
在另一个终端上,服务器仍然保持 运行。它没有关闭。在我的本地,当我点击这个关闭命令时,我没有看到任何日志或异常。
**
Can someone please help me to figure out, what is missing in my configuration.
**
注意:当我尝试使用具有相同命令的 Jenkins 作业关闭服务器时(并且 运行 jenkins 服务器具有与本地相同的 pom 和属性),出现以下异常:{"timestamp":1515145896307,"status":500,"error":"Internal Server Error","exception":"java.lang.NoClassDefFoundError","message":"org/springframework/boot/actuate/endpoint/ShutdownEndpoint","path":"/shutdown"}
我的pom.xml如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.samples</groupId>
<artifactId>AllergiesConditions</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<!-- Generic properties -->
<java.version>1.7</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
</dependency>
<!-- Exclude Spring Boot's Default Logging -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
<build>
<finalName>AllergiesConditions</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
我的 application.properties 包括以下几行:
server.port=8000
endpoints.shutdown.sensitive=false
endpoints.shutdown.enabled=true
使用 1.5 版本的 spring 启动,我认为没有确定的关闭机制。
您可以查看此 link 并了解如何在您的应用程序中使用 jmx 或 http https://github.com/corentin59/spring-boot-graceful-shutdown 正确关闭。
祝你好运
回答我自己的问题:
实际上这是一个愚蠢的错误。我只是复制粘贴来自 没有真正理解它。
我在 application.properties
中添加了server.contextPath=/AllergiesConditions
所以现在关机命令将变为:curl -X POST localhost:8080/AllergiesConditions/shutdown
我犯的另一个错误是,我没有post完整application.properties问题的描述,所以实际上没有人能提供帮助。