今天本人處理了一起springboot項(xiàng)目生產(chǎn)session-out超時(shí)問(wèn)題,項(xiàng)目采用下面方案四application.yaml配置session-out。先描述下問(wèn)題,在測(cè)試環(huán)境通過(guò)改動(dòng)application.yaml配置session-out,經(jīng)過(guò)設(shè)置不同值發(fā)現(xiàn)session-out配置生效,于是就直接設(shè)置了過(guò)期時(shí)間為8小時(shí)發(fā)布到了生產(chǎn)環(huán)境。中午接到客戶反應(yīng)項(xiàng)目過(guò)期時(shí)間設(shè)置較短,半小時(shí)不操作 就會(huì)話過(guò)期需要反復(fù)登陸。本人接到反饋以后百思不得其解,明明看到session-out設(shè)置了8小時(shí)為什么出現(xiàn)過(guò)期問(wèn)題。接下來(lái)時(shí)間經(jīng)過(guò)反復(fù)查找問(wèn)題發(fā)現(xiàn)是Tomcat中web.xml中session-out設(shè)置為30分,原來(lái)是因?yàn)樵跍y(cè)試環(huán)境啟動(dòng)項(xiàng)目未使用Tomcat,所以項(xiàng)目中application.yaml配置session-out是生效的。但是問(wèn)題關(guān)鍵:項(xiàng)目生產(chǎn)環(huán)境發(fā)布是通過(guò)云服務(wù)(Docker K8s),也就是在通過(guò)Docker構(gòu)建鏡像時(shí)使用了tomcat的web.xml中的session-out,最終解決方法在Docker構(gòu)建鏡像時(shí),將修改后的web.xml放入DockerFile中,再次構(gòu)建鏡像成功時(shí)web.xml會(huì)替換原Tomcat下的web.xml,問(wèn)題最終得以解決。
seesion失效:從用戶登陸開(kāi)始創(chuàng)建一個(gè) session,當(dāng)用戶停止操作時(shí)間大于session-out設(shè)置時(shí)間則會(huì)話過(guò)期。
1.在工程的web.xml中設(shè)置
[html] view plain copy<!-- 時(shí)間單位為分鐘 --> <session-config> <session-timeout>15</session-timeout></session-config>
2.在web容器中設(shè)置(此處以tomcat為例)
[html] view plain copy <!-- ==================== Default Session Configuration ================= --> <!-- You can set the default session timeout (in minutes) for all newly --> <!-- created sessions by modifying the value below. --> <session-config> <session-timeout>30</session-timeout> </session-config>
3.通過(guò)Java代碼設(shè)置
session.setMaxInactiveInterval(30*60);//以秒為單位
4.springboot項(xiàng)目application.yaml設(shè)置
server: port: 8089 session: timeout: 1800 #以秒為單位
聯(lián)系客服