實現session***享之前首先得有壹個集群環境,就像談戀愛之前要先有個女朋友是壹個道理,我們在/usr目錄下創建壹個/tomcat_cluster目錄,並在這個目錄中集群3個Tomcat,很簡單就像這樣:
這裏寫圖片描述
然後我們壹次修改這三個tomcat的端口,包括shutdown端口、
用戶名:ftp1.linuxidc.com
密碼:www.linuxidc.com
在 2016年LinuxIDC.com\9月\Linux CentOS 7 下通過Memcached實現Session***享\下載方法見 /Linux/2013-10/91140.htm------------------------------------------分割線------------------------------------------下載完成後即可通過winscp來快速完成tomcat的jar包替換:
這裏寫圖片描述
配置說明
jar包準備好的話就分別拷貝到我們集群的3個Tomcat的lib目錄下,然後再分別修改每個Tomcat目錄下的conf/context.xml文件,在其中添加memcached-session-manager的配置。因為我們這裏集群了3臺Tomcat,所以我們必須使用non-sticky模式,即采用非粘性session管理配置,配置文件如下:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:127.0.0.1:11211" //memcached服務器地址sticky="false" //註意壹定是false
lockingMode="auto"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"sessionBackupTimeout="1000"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
memcached的默認端口號是11211,如果不確定的話可以通過netstat來查看,命令如下:
netstat -tunlp | grep memcached
這樣就可以清楚的看到memcached所占用的端口:
這裏寫圖片描述
沒有其它問題的話就依次啟動三個Tomcat,再啟動Memcached,接著就可以測試session***享了。
測試
配完之後當然要測試壹下了,準備壹個最簡單的java web項目:
這裏寫圖片描述
在IDE創建壹個web項目部署後再從tomcat拷貝出來即可,唯壹需要改的就是index.jsp,我們看壹下裏面的代碼:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<%String sessid = request.getSession().getId();%>
sessionid=<%=sessid%><br/>
This is my JSP page 111111.
<br>
</body>
</html>
頁面也很簡單,只是加入了打印sessionid的代碼,因為我們要根據sessionid去判斷session是否壹致,將這個項目分別拷貝至三個Tomcat的webapps目錄下,為了做點區分最好再改壹下靜態文本,比如tomcat1下的是“This is my JSP page 111111.”,而tomcat2下的改為222222,同理tomcat3下的改為333333,項目傳完後,依次啟動這三個Tomcat,再啟動memcached,通過瀏覽器訪問看壹下結果:
這裏寫圖片描述
仔細觀察壹下運行結果,可以發現sessionid都是壹致的,這也就很好的說明了我們成功的在這三個Tomcat之間***享了session。
總結
簡單記錄壹下通過Memcached來實現session***享的全過程,希望對遇到同樣問題的朋友有所幫助,The End。