|
@@ -0,0 +1,181 @@
|
|
|
+## 3-1 概要设计
|
|
|
+
|
|
|
+2. 用户注册 用户登录
|
|
|
+
|
|
|
+3. passport登录 , 从什么地方来, 到什么地方去
|
|
|
+
|
|
|
+4. JSESSION的共享 ,实现多服务器集群的 SSO
|
|
|
+
|
|
|
+5. 与其他系统的SSO
|
|
|
+
|
|
|
+
|
|
|
+## 3-2 数据库设计 (数据库对应的模式描述)
|
|
|
+
|
|
|
+2. 用户注册 用户登录
|
|
|
+
|
|
|
+3. passport登录 , 从什么地方来, 到什么地方去
|
|
|
+
|
|
|
+4. JSESSION的共享 ,实现多服务器集群的 SSO
|
|
|
+
|
|
|
+5. 与其他系统的SSO
|
|
|
+
|
|
|
+
|
|
|
+## 3-3 技术路线 (使用的技术路线)
|
|
|
+
|
|
|
+2. 用户注册 用户登录
|
|
|
+
|
|
|
+3. passport登录 , 从什么地方来, 到什么地方去
|
|
|
+
|
|
|
+4. JSESSION的共享 ,实现多服务器集群的 SSO
|
|
|
+
|
|
|
+5. 与其他系统的SSO
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## 3-4 详细方案(设计与技术实现 技术细节)
|
|
|
+
|
|
|
+
|
|
|
+2. 用户注册 用户登录
|
|
|
+
|
|
|
+3. passport登录 , 从什么地方来, 到什么地方去
|
|
|
+
|
|
|
+4. JSESSION的共享 ,实现多服务器集群的 SSO
|
|
|
+
|
|
|
+5. 与其他系统的SSO
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+### 准备环境
|
|
|
+
|
|
|
+>1.配置可以共享session的tomcat
|
|
|
+>
|
|
|
+>2.创建docker容器
|
|
|
+>
|
|
|
+>3.上传war包 重启容器
|
|
|
+
|
|
|
+#### 配置可以共享session的tomcat
|
|
|
+
|
|
|
+参考连接https://blog.csdn.net/lzc409973859/article/details/51981079
|
|
|
+
|
|
|
+`本质为替换掉tomcat默认的session管理`
|
|
|
+
|
|
|
+>1. 下载RedisSessionManager 源代码 <https://github.com/jcoleman/tomcat-redis-session-manager>
|
|
|
+
|
|
|
+>2. 修改源代码 `修改RedisSessionManager类中的initializeSerializer()方法`
|
|
|
+
|
|
|
+```java
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+```
|
|
|
+
|
|
|
+>3. 使用idea maven 打包
|
|
|
+
|
|
|
+```xml
|
|
|
+<?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>
|
|
|
+```
|
|
|
+
|
|
|
+>4. 将 `build_tomcat_session_redis ` `jedis-2.7.2.jar` ` commons-pool2-2.3.jar` 拷贝到tomcat的lib文件夹下面
|
|
|
+>
|
|
|
+> 这里可以把这些jar放到lib的自定义文件夹。以便与docker映射。
|
|
|
+>
|
|
|
+> 下边是 将jar放入tomcat lib 文件夹下的 rslib文件夹的配置
|
|
|
+
|
|
|
+- 修改tomcat `conf`文件夹下` catalina.properties`配置文件
|
|
|
+
|
|
|
+ 在==common.loader==后边添加=="${catalina.home}/lib/rslib/*.jar"==
|
|
|
+
|
|
|
+ ```properties
|
|
|
+ common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${catalina.home}/lib/rslib/*.jar"
|
|
|
+ ```
|
|
|
+
|
|
|
+>5. 修改tomcat配置 使其使用自定义SessionManager 并配置redis
|
|
|
+
|
|
|
+- 修改tomcat `conf`文件夹下 `context.xml`
|
|
|
+
|
|
|
+ ```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" />
|
|
|
+ ```
|
|
|
+
|
|
|
+#### 创建docker容器
|
|
|
+
|
|
|
+```shell
|