java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot自动重启问题

如何解决springboot自动重启问题

作者:离岸&南墙

这篇文章主要介绍了如何解决springboot自动重启问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

springboot自动重启

主要原因 

如果应用使用 spring-boot-devtools ,则只要classpath下的文件有变动,它就会自动重启。这在使用IDE时非常有用,因为可以很快得到代码改变的反馈。

默认情况下,classpath下任何指向文件夹的实体都会被监控,注意一些资源的修改比如静态assets,视图模板不需要重启应用。

在项目工程中,如果你的日志是输出在classpath下,而且是RollingFile,那么你的idea肯定会不断重启,我的就是这种情况。

spring-boot-devtools为springboot热部署模块

主要作用:监控是否修改代码,直接进行编译,快速得到项目响应

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>true</scope>
</dependency>

解决办法

1.在项目pom.xml文件中将相应热部署模块删除,重新加载项目依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>true</scope>
</dependency>

2.在配置文件中更改devtools状态

将devtools工具状态更改为false

注意:如果每次修改后台代码需要重新启动项目,进行编译,仅修改前端代码无需重启项目,可以直接在浏览器端看到修改后的内容

自动重启springboot jar程序,让程序用不宕机

有时候我们已经会遇到服务突然掉线的问题,但是我们一直不知道,一直等到有人通知,或者自检的时间才发现。

现在我为了确保服务在停止后,能够自动重启,做一个自动检测脚本xxx.sh,放到系统定时任务里面,几分钟检测一次查看服务在不在线,如果不在就重启服务。

sh脚本的写法:

#!/bin/bash
    num=`ps -ef|grep jar包名|grep -v grep|wc -l`
    if [ $num -lt 1 ];then
        source /etc/profile 
        nohup java -jar /xxx/xxx/xxx.jar >> /xxx/xxx/log-server-$(date +%Y-%m-%d).log 2>&1
    else
        echo $(date '+%Y-%m-%d %H:%M:%S') $@ >> /xxx/xxx/log.log
    fi

crontab -e 查看定时任务,

点击 insert 按键编写定时任务,

# 注释
*/3 * * * * /xxx/xxx/start.sh

定时任务编写完成后,点击 Esc 按键,输入“:wq” 在点击回车,退出

最后给sh脚本文件设置权限

chmod 777 start.sh

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文