diff --git a/bin/build-ry-admin-war.cmd b/bin/build-ry-admin-war.cmd new file mode 100644 index 00000000..57386886 --- /dev/null +++ b/bin/build-ry-admin-war.cmd @@ -0,0 +1,2 @@ +call mvn clean install -f ../pom.xml +call mvn clean package -f ../ruoyi-admin/pom-war.xml \ No newline at end of file diff --git a/ruoyi-admin/pom-war.xml b/ruoyi-admin/pom-war.xml new file mode 100644 index 00000000..10021104 --- /dev/null +++ b/ruoyi-admin/pom-war.xml @@ -0,0 +1,90 @@ + + + + ruoyi + com.ruoyi + 3.1 + + 4.0.0 + war + ruoyi-admin-war + + + web服务入口(war) + + + + + + + + org.springframework.boot + spring-boot-devtools + true + + + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + + + com.ruoyi + ruoyi-framework + ${ruoyi.version} + + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + org.apache.tomcat.embed + tomcat-embed-jasper + provided + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + + repackage + + + + + + org.apache.maven.plugins + maven-war-plugin + 3.0.0 + + false + ${artifactId} + + + + ${artifactId} + + + \ No newline at end of file diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationShutdownBean.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationShutdownBean.java new file mode 100644 index 00000000..715b4a83 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationShutdownBean.java @@ -0,0 +1,61 @@ +package com.ruoyi.framework.config; + +import com.ruoyi.framework.manager.AsyncManager; +import com.ruoyi.framework.shiro.web.session.SpringSessionValidationScheduler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PreDestroy; +import java.util.concurrent.TimeUnit; + +/** + * AsyncManagerShutdownBean 类 + * + * @Auther: cj + * @Date: 2018/12/28 + */ +@Component +public class ApplicationShutdownBean +{ + private static final Logger logger = LoggerFactory.getLogger("sys-user"); + + @Autowired(required = false) + private SpringSessionValidationScheduler springSessionValidationScheduler; + + @PreDestroy + public void destroy() + { + shutdownSpringSessionValidationScheduler(); + shutdownAsyncManager(); + } + + private void shutdownSpringSessionValidationScheduler() + { + if(springSessionValidationScheduler != null && springSessionValidationScheduler.isEnabled()) + { + try + { + logger.info("关闭会话验证任务"); + springSessionValidationScheduler.disableSessionValidation(); + } + catch (Exception e) + { + logger.error(e.getMessage(),e); + } + } + } + private void shutdownAsyncManager() + { + try + { + logger.info("关闭后台任务线程池"); + AsyncManager.me().shutdown(10, TimeUnit.SECONDS); + } + catch (Exception e) + { + logger.error(e.getMessage(),e); + } + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java index 0a015a6b..c64a0e4c 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java @@ -40,4 +40,10 @@ public class AsyncManager { executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS); } + + public void shutdown(long timeout, TimeUnit unit) throws Exception + { + executor.shutdown(); + executor.awaitTermination(timeout,unit); + } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/SpringSessionValidationScheduler.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/SpringSessionValidationScheduler.java index cce436ab..e94cf678 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/SpringSessionValidationScheduler.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/shiro/web/session/SpringSessionValidationScheduler.java @@ -134,6 +134,18 @@ public class SpringSessionValidationScheduler implements SessionValidationSchedu log.debug("Stopping Spring Scheduler session validation job..."); } + if(this.enabled) + { + executorService.shutdown(); + try + { + executorService.awaitTermination(10,TimeUnit.SECONDS); + } + catch (InterruptedException e) + { + log.error(e.getMessage(),e); + } + } this.enabled = false; } }