Tomcat的Session過期處理策略

2021-08-27 02:01:14 字數 1762 閱讀 8478

tomcat容器實現類都繼承了containerbase類,容器在啟動的時候都會呼叫containerbase類的threadstart()方法,threadstart()方法如下:

protected void threadstart()
protected class containerbackgroundprocessor implements runnable  catch (interruptedexception e) 

if (!threaddone)

processchildren(parent, cl);}}

}protected void processchildren(container container, classloader cl)

container.backgroundprocess();

} catch (throwable t) finally

container children = container.findchildren();

for (int i = 0; i < children.length; i++) }}

}

backgroundprocess()方法如下:

public void backgroundprocess()  catch (exception e) 

}if (loader != null) catch (exception e)

}if (manager != null) catch (exception e)

}if (realm != null) catch (exception e)

}valve current = pipeline.getfirst();

while (current != null) catch (exception e)

current = current.getnext();

}lifecycle.firelifecycleevent(lifecycle.periodic_event, null);

}

在呼叫standcontext類的backgroundprocess()方法時, 會呼叫standardmanager的backgroundprocess()方法,該方法如下:

public void backgroundprocess()

proces***piresfrequency的預設值為6,所以每6*10秒會調一次proces***pires()方法,proces***pires()方法如下:

public void proces***pires() 

}long timeend = system.currenttimemillis();

if(log.isdebugenabled())

log.debug("end expire sessions " + getname() + " processingtime " + (timeend - timenow) + " expired sessions: " + expirehere);

processingtime += ( timeend - timenow );

}

該方法主要判斷session是否過期,過期則清除.

整個過程看起來有點複雜,簡單地來說,就是tomcat伺服器在啟動的時候初始化了乙個守護執行緒,定期去檢查有沒有session過期.過期則清除.

Tomcat集群的session共享

第一種是以負載均衡伺服器本身提供的session共享策略,每種服務 器的配置是不一樣的並且nginx本身是沒有的。第二種是利用web容器本身的 session 共享策略來配置共享。針對於 weblogic 這種方式還是靠普的。但是針對於 tomcat 這種方式存在很大的缺陷,主要因為是依靠廣播方式來...

tomcat集群session共享

才疏學淺且語無倫次,如有誤人子弟,深表歉意 一台tomcat不夠用時,要麼換更好的機器,要麼加機器做集群。做集群就會涉及到負載均衡,比如nginx,會把到來的每個請求按一定的規則 給後端tomcat,這就有乙個逃避不了的問題需要解決,使用者的session需要在不同的tomcat之間共享。比較偷懶的...

Tomcat實現Session複製

tomcat實現session複製 需要三颱虛擬機器一台nginx兩台tomcat 關閉相關的安全機制 systemctl stop firewalld iptables f setenforce 0 首先需要將兩台tomcat和一台nginx實現負載均衡 root nginx vim usr lo...