用户注册 用户登录
passport登录 , 从什么地方来, 到什么地方去
JSESSION的共享 ,实现多服务器集群的 SSO
与其他系统的SSO
用户注册 用户登录
passport登录 , 从什么地方来, 到什么地方去
JSESSION的共享 ,实现多服务器集群的 SSO
与其他系统的SSO
用户注册 用户登录
passport登录 , 从什么地方来, 到什么地方去
JSESSION的共享 ,实现多服务器集群的 SSO
与其他系统的SSO
1.配置可以共享session的tomcat
2.创建docker容器
3.上传war包 重启容器
参考连接https://blog.csdn.net/lzc409973859/article/details/51981079
本质为替换掉tomcat默认的session管理
下载RedisSessionManager 源代码 https://github.com/jcoleman/tomcat-redis-session-manager
修改源代码
修改RedisSessionManager类中的initializeSerializer()方法
private void initializeSerializer() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
log.info("Attempting to use serializer :" + serializationStrategyClass);
serializer = (Serializer) Class.forName(serializationStrategyClass).newInstance();
Loader loader = null;
if (getContainer() != null) {
loader = getContainer().getLoader();
}
ClassLoader classLoader = null;
if (loader != null) {
serializer.setClassLoader(classLoader);
}
}
private void initializeSerializer() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
log.info("Attempting to use serializer :" + serializationStrategyClass);
serializer = (Serializer) Class.forName(serializationStrategyClass).newInstance();
Loader loader = null;
Context context = this.getContext();
if (context != null) {
loader = context.getLoader();
}
ClassLoader classLoader = null;
if (loader != null) {
classLoader = loader.getClassLoader();
}
serializer.setClassLoader(classLoader);
}
- 使用idea maven 打包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yuncai</groupId>
<artifactId>build_tomcat_session_redis</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<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>
</project>
- 将
build_tomcat_session_redis
jedis-2.7.2.jar
commons-pool2-2.3.jar
拷贝到tomcat的lib文件夹下面这里可以把这些jar放到lib的自定义文件夹。以便与docker映射。
下边是 将jar放入tomcat lib 文件夹下的 rslib文件夹的配置
conf
文件夹下catalina.properties
配置文件在==common.loader==后边添加=="${catalina.home}/lib/rslib/*.jar"==
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/lib/rslib/*.jar"
- 修改tomcat配置 使其使用自定义SessionManager 并配置redis
修改tomcat conf
文件夹下 context.xml
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="www.cyc-fund.com.cn"
port="16379"
password="******"
database="0"
maxInactiveInterval="300" />
```shell