我的tomcat+redis實現session共享配置之路
阿新 • • 發佈:2019-01-04
2、在myeclipse 新建一個maven專案【maven-archetype-quickstart】
原始檔新建包名com.orangefunction.tomcat.redissessions
講下載下來的java類拷貝到該包之下(這些java類只實現tomcat7,實現tomcat8需要做一些修改)
JavaSerializer.java
RedisSession.java
RedisSessionHandlerValve.java
RedisSessionManager.java
Serializer.java
SessionSerializationMetadata.java
3、tomcat8與tomcat7 有些實現程式碼不一樣,需各自新建一個maven專案要各自打包,注意tomcat引得版本與jdk要保持一致
====tomcat8 maven pom.xml====
<dependencies>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>8.0.33</version >
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin > <!-- 打jar包 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<!-- 原始碼編譯版本 -->
<source>1.8</source>
<!-- 目標平臺編譯版本 -->
<target>1.8</target>
<!-- 字符集編碼 -->
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
====tomcat7 maven pom.xml====
<dependencies>
<!-- tomcat7 source1.7 -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>7.0.27</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin> <!-- 打jar包 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<!-- 原始碼編譯版本 -->
<source>1.7</source>
<!-- 目標平臺編譯版本 -->
<target>1.7</target>
<!-- 字符集編碼 -->
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
將打包出來的tomcat-redis的jar包和
jedis-2.7.2.jar
commons-pool2-2.3.jar
拷貝到tomcat的lib資料夾下面
4、tomcat配置
====tomcat context.xml====
<!--
com.orangefunction.tomcat.redissessions 是自定義maven專案的報名路徑,切需要與maven 中 RedisSessionManager的serializationStrategyClass值一致
-->
<!-- redis session 共享配置 -->
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="127.0.0.1"
port="6379"
database="0"
maxInactiveInterval="60" />
<!-- 叢集配置 還未進行驗證-->
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
maxInactiveInterval="60"
sentinelMaster="mymaster"
sentinels="127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381,127.0.0.1:26382" />
5、需要特別注意的是專案中要存入session的物件必須實現序列化,否知會出現序列化錯誤
public class Test implements Serializable {
private static final long serialVersionUID = 5021582410009851677L;
......
}
配置截圖:
參考網址: