一、session共享原理
在負載均衡的模式下開發,會在不同的服務器上進行訪問,因此同一個客戶端不同的請求可能會產生不同的session,就會產生多次登錄的現象。因此需要session共享,此處我們使用redis將session存儲的形式。
二、sesion共享配置
(1)需要兩個tomcat,並配置不同的端口號
分別在tomcat1的conf→server.xml中配置
1. <Server port="18005" shutdown="SHUTDOWN">
2.<Connector port="18080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3. <Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />
分別在tomcat2的conf→server.xml中配置
1. <Server port="28005" shutdown="SHUTDOWN">
2.<Connector port="28080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3. <Connector port="28009" protocol="AJP/1.3" redirectPort="8443" />
(2)在tomcat的webapps ROOT下建立一個向session寫數據的,一個從session得到數據和session的JSP文件
(3)將jedis-2.5.2.jar
commons-pool.jar
tomcat-redis-session-manager-2.0.0.jar
全部拷貝到兩個tomcat的lib下面(這幾個包重寫的tomcat的底層session實現機制)
(4)在兩個tomcat的conf下面的context.xml中加入如下代碼
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost"//redis的地址
port="6379"//redis的端口
database="0"//redis的數據庫,選擇哪個數據庫
maxInactiveInterval="60" />
(5)兩個tomcat啓動,啓動ngnix,啓動redis
(6)此時在瀏覽器中可以輸入localhost:18080/write.jsp
localhost:18080/read.jsp
(7)此時在瀏覽器中可以輸入localhost:28080/write.jsp
localhost:28080/read.jsp
此時得到的是相同的session