session 共享-spring-整合redis

一.環境準備(windows下nginx+tomcat,linux同理)

1.nginx一臺

2.tomcat 2臺(端口號不同,我這里是8081和8082)

3.web項目一個(我這里項目名tomcat-session)

二.詳細配置

1.nginx

在nginx的conf文件下找到nginx.conf將以下位置改成


image.png
2.tomcat

在tomcat的conf文件夾下找到server.xml配置文件進行端口配置,分別配置成8081和8082,和nginx中相同。

image.png
添加虛擬路徑
image.png
3.web項目(tomcat-session)

在build.gradle文件中添加依賴(maven同理)

compile group: 'org.springframework.session', name: 'spring-session-data-redis', version: '1.3.0.RELEASE'

在WEB-INF下創建spring-session.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd" default-autowire="byName">

    <context:annotation-config/>

    <bean id="sessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
        <!--修改session的有效時間-->
        <property name="maxInactiveIntervalInSeconds" value="1800"></property>
    </bean>
<!--本地redis配置,大家自定安裝redis-->
    <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="hostName" value="127.0.0.1"></property>
        <property name="port" value="6379"></property>
        <property name="password" value="123"></property>
    </bean>
</beans>

項目加載的時候加載spring-session.xml,在web.xml中加載它。并添加過濾器。(注意,在所有的過濾器之前)

   <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-session.xml</param-value>
    </context-param>

   <filter>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

在index.jsp中添加如下代碼(首頁能訪問的到)

項目1:
 <body>
  SessionID:<%=session.getId()%>
  <BR>
  SessionIP:<%=request.getServerName()%>
  <BR>
  SessionPort:<%=request.getServerPort()%>
  <%
    out.println("This is Tomcat Server 1111");
  %>
  </body>
項目2:
 <body>
  SessionID:<%=session.getId()%>
  <BR>
  SessionIP:<%=request.getServerName()%>
  <BR>
  SessionPort:<%=request.getServerPort()%>
  <%
    out.println("This is Tomcat Server 222");
  %>
  </body>

三.啟動訪問

啟動redis,(先啟動resdis)和2臺tomcat,nginx。

1,直接訪問2個項目

項目1:


image.png

項目2:


image.png

redis 2次訪問后分布查看結果
image.png

通過上述圖片可以發現兩次的結構是一樣的。

2.通過nginx訪問,(先使用flushall命令清空redis)使用nginx中server_name : localhost 訪問

分發請求到項目1

image.png

分發請求到項目2

image.png

redis:

image.png

同樣通過上述圖片可以看出也實現了session的共享。
四.參考文獻
http://blog.csdn.net/xiaozhaorui/article/details/51326833
http://www.10tiao.com/html/591/201702/2247483939/1.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容