springboot项目在启动的时候,使用java -jar  styy_auth_server.jar

比如我自己在公司测试服务器上写的启动文件start.sh

#!/bin/sh
nohup java -jar styy_auth_server.jar 2>&1 > styy_auth_server.out &

每次启动后,比如要更新下服务代码,就要停止服务,

每次我都是这样操作的,kill -9 xxx

很麻烦,,,,,,,

所以今天在浏览csdn的时候发现别的大佬写了个优雅的关闭springboot我也试了试。。。效果很不错\(^o^)/

步骤:

1.在maven中先添加actuator的引用

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

2.在springboot的全局配置文件application.yml 中添加

management:endpoint:shutdown:enabled: true  #启用shutdownendpoints:web:exposure:include: "*"base-path: /MyActuator # 自定义管理端点的前缀(保证安全)server:port: 12888address: 127.0.0.1 # 不允许远程管理连接(不允许外部调用保证安全)

3.在springboot的主启动函数类中添加tomcat的的停机支持

package smartt.styy.auth;import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.connector.Connector;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;import org.springframework.context.event.ContextClosedEvent;
import smartt.styy.auth.filter.HttpServletRequestReplacedFilter;import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;/*** @author shangtengfei* 启动方法 ,入口*/
@SpringBootApplication
@ServletComponentScan
@MapperScan("smartt.styy.auth.mapper")
@Slf4j
public class AuthSpringBootApplication
{public static void main( String[] args ){SpringApplication.run(AuthSpringBootApplication.class, args);}/*** 9     * 用于接受 shutdown 事件* 10*/@Beanpublic GracefulShutdown gracefulShutdown() {return new GracefulShutdown();}@Beanpublic ServletWebServerFactory servletContainer() {TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();tomcatServletWebServerFactory.addConnectorCustomizers(gracefulShutdown());return tomcatServletWebServerFactory;}private class GracefulShutdown implements TomcatConnectorCustomizer, ApplicationListener<ContextClosedEvent> {private volatile Connector connector;private final int waitTime = 10;@Overridepublic void customize(Connector connector) {this.connector = connector;}@Overridepublic void onApplicationEvent(ContextClosedEvent contextClosedEvent) {this.connector.pause();Executor executor = this.connector.getProtocolHandler().getExecutor();try {if (executor instanceof ThreadPoolExecutor) {ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor;threadPoolExecutor.shutdown();if (!threadPoolExecutor.awaitTermination(waitTime, TimeUnit.SECONDS)) {log.warn("Tomcat 进程在" + waitTime + " 秒内无法结束,尝试强制结束");}}} catch (Exception e) {e.printStackTrace();Thread.currentThread().interrupt();}}}}

4.在postman中测试。添加完后。。。启动测试

注意:

记住一定是post提交, url为127.0.0.1:12888\MyActuator\shutdown,此时idea里面的项目就停止了。。。

5.编写linux的停止文件shutdown.sh  ,对照自己的测试服务器进行相应的修改

curl -X POST 192.168.55.242(ip):12888(端口)/MyActuator/shutdown

基本操作我们就做完了,,,,但是有个问题,别人要是通过扫描工具扫描到了,把我们服务停了怎么办,,,,,

安全认证待续。。。。

springboot项目优雅的停止服务相关推荐

  1. springboot项目:家庭整理服务管理系统39774(java+VUE+Mybatis+Maven+Mysql)

    springboot项目:家庭整理服务管理系统39774(java+VUE+Mybatis+Maven+Mysql) 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...

  2. spring-boot项目优雅的http客户端工具,太香了!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:https://juejin.im/post/6854573 ...

  3. springboot 脚本启动、停止服务

    启动服务:#!/bin/bash CPU_COUNT=`cat /proc/cpuinfo | grep processor | wc -l`MEM_OPTS="-Xms1024m -Xmx ...

  4. ShutdownHook - java中优雅地停止服务

    1.什么是ShutdownHook 在Java程序中可以通过添加关闭钩子,实现在程序退出时关闭资源.平滑退出的功能. 使用Runtime.addShutdownHook(Thread hook)方法, ...

  5. JDK ShutdownHook - 优雅地停止服务

    一.什么是ShutdownHook? 在Java程序中可以通过添加关闭钩子,实现在程序退出时关闭资源.平滑退出的功能.  使用Runtime.addShutdownHook(Thread hook)方 ...

  6. 阿里云 Java发布SpringBoot项目,使用邮件服务发送失败原因整理

    查了很多失败原因大致有一下几点: 使用了25端口,阿里云默认是禁用掉25端口的,看看能否通 解决办法:代码配置中指定为465端口 telnet smtp.163.com 25 2.使用465端口,依旧 ...

  7. OAuth2.0 社交登录-Gitee springboot项目整合(微服务分布式)完整代码包括 数据库、前、后端

    文章目录 社交登录(Gitee) 1.模拟请求 项目整合 1.数据库增加字段 2.前端 2.后端 社交登录(Gitee) 完成这个踩了很多坑,包括第一时间忘了浏览器缓存这回事以及微博一些平台申请社交登 ...

  8. SpringBoot 项目优雅实现 Excel 导入导出功能

    背景 Excel 导入与导出是项目中经常用到的功能,在 Java 中常用 poi 实现 Excel 的导入与导出.由于 poi 占用内存较大,在高并发下很容易发生 OOM 或者频繁 fullgc,阿里 ...

  9. 关于webservice服务在springboot项目中的开发的介绍

    在springboot项目中搭建webservice服务端及使用客户端进行请求的介绍 一.引包 二.搭建webservice服务 (一)使用CXF搭建webservice服务 (二)webservic ...

最新文章

  1. 什么时候用var关键字
  2. eslint 无法格式化ts_vscode-eslint的踩坑实践--typescript无法格式化
  3. python六十一: __module__属性
  4. wxWidgets:wxModalDialogHook类用法
  5. 【简便代码+解析】1056 组合数的和 (15分)_14行代码AC
  6. 第十二周学习进度总结
  7. 如何评价一个开源项目——协作影响力
  8. 前端学习(2488):使用git获取代码
  9. 树莓派使用STEP1:装系统
  10. Python(17)-元组tuple
  11. 【安全风险通告】Apache ShardingSphere远程代码执行漏洞安全风险通告
  12. k8s-configmap 挂载使用
  13. springBoot于tomcat7搭建websocket服务
  14. python训练聊天机器人词库_Python实现聊天机器人的示例代码
  15. c语言程序软件下载,C语言下载_C语言官方下载【C语言编程软件】-太平洋下载中心...
  16. Java我的世界forge安装失败,我的世界forge安装失败install怎么办
  17. 小程序 login获取出错: 40125, errmsg: invalid appSecret
  18. 20172301 2017-2018-2 《程序设计与数据结构》第八周学习总结
  19. NYOJ 234 吃土豆(基础dp)
  20. numpy_flatten函数

热门文章

  1. 赵丽颖明星人物介绍html源码 html期末大作业 课程设计
  2. Sonar Scanner 分析参数:即如何配置sonar-project.properties文件
  3. Java8新特性【函数式编程API、新时间日期处理API、Optional容器类】总结
  4. 「镁客·请讲」华科创智喻东旭:纳米银线最终将带来移动终端的革命
  5. C#中foreach用法总结
  6. 奔驰官宣明年释放“过渡版”L3,允许激活≠安全可靠
  7. leetcode 5-最长回文子串(中心扩展算法)
  8. 弘辽科技:开网店怎么找厂家合作?如何搜索厂家?
  9. C# 主窗体Load事件、Shown事件、Activated事件 区别
  10. ES6形式常用的数组遍历函数