使用以下命令停止spring应用程序上下文时遇到问题:
ConfigurableApplicationContext.close();
http端口已停止,但弹簧执行器管理端口management.server.port
9001
未关闭。
因此,当我尝试重新启动应用程序时,spring给出以下异常:
org.springframework.boot.web.server.PortInUseException: Port 9001 is already in use
谢谢。
使用application.properties片段更新:
management.server.port=9001
management.server.ssl.enabled=false
management.endpoints.web.exposure.include=info,health
答案 0 :(得分:0)
我不确定是否会有所帮助,但首先,我将尝试手动杀死9001上正在运行的所有内容。
我使用命令:lsof -i :9001
来获取PID,然后是kill -9 <PID>
。
然后尝试再次运行应用程序,它将运行正常。等待关机,然后重新开始。
我在本地设置了一个非常基本的Spring应用程序,无法复制该问题。
package com.example.demo;
import org.springframework.beans.BeansException;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class DemoApplication implements ApplicationContextAware {
private static ApplicationContext appContext;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
((ConfigurableApplicationContext)appContext).close();
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
appContext = applicationContext;
}
}
我的Yaml文件如下所示:
management:
server:
port: 9001
server:
port: 8080
您能否提供一个配置文件示例以及您在哪里调用ConfigurableApplicationContext.close();
?