第三步 iPortal 与代理服务的 session 共享配置

发送反馈


为保证 iPortal 中的代理服务能够正常访问,管理员需对登录用户的 Cookie 信息进行存储配置,实现 iPortal 与代理服务的 session 共享,即:用户登录到 iPortal 门户后,即可访问代理服务。

iPortal 和独立部署的代理服务之间 session 共享支持 Memcached 和 Redis 两种方式,需要分别在 iPortal 安装包和服务代理安装包中进行配置。本篇介绍在 iPortal 安装包中的 session 共享配置。

使用 Memcached 实现 iPortal 与独立代理的 session 共享

  1. 安装并启动 Memcached 服务

关于 Memcached 的安装和启动请参见:Memcached 配置

  1. 拷贝相关依赖

将代理安装包中 lib 目录下(【SuperMap iPortal Proxy 安装目录】\lib)的以下三个依赖库拷贝到 iPortal 安装包的 lib 目录下(【SuperMap iPortal 安装目录】\lib)。

  1. 管理员打开 server.xml 文件(位于 %SuperMap iPortal_HOME%\conf 目录下),在 <Host>节点中添加如下内容:

<Context path="/iportal">

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:127.0.0.1:11211"

sticky="false"

sessionBackupAsync="false"

lockingMode="all"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>

</Context>

使用 Redis 实现 iPortal 与独立代理的 session 共享

iPortal 安装包和独立部署的代理安装包均依托于 Tomcat,所以可以借助 Tomcat 集群基于 Redis 的会话共享机制实现 session 共享。步骤如下:

  1. 获取基于 Redis 的 Tomcat 集群 会话管理器。获取地址:https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/4.0/tomcat-cluster-redis-session-manager.zip
  2. 解压后,将/lib 中所有的 jar 拷贝到 【SuperMap iPortal 安装目录】/lib 目录
  3. 给 iPortal 安装包所在的 Tomcat 添加一个系统环境变量 "catalina.base",变量取值为 tomcat 的根目录,具体如下:

在【SuperMap iPortal 安装目录】/bin/catalina.bat 的 set "CATALINA_HOME=%CURRENT_DIR%" 下面,增加如下内容:

set "catalina.base=%CATALINA_HOME%"

  在【SuperMap iPortal 安装目录】/bin/catalina.sh 的 CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd` 下面,增加如下内容:

catalina.base="$CATALINA_HOME"

  1. 修改 conf/redis-data-cache.properties 配置文件中 redis 的相关配置项为实际内容,并将其拷贝到 【SuperMap iPortal 安装目录】/conf 目录
  2. 在【SuperMap iPortal 安装目录】/conf/context.xml 中找到 <Context> 节点,添加如下配置节点,若已存在无需重复添加。

    <Valve className="tomcat.request.session.redis.SessionHandlerValve" />

    <Manager className="tomcat.request.session.redis.SessionManager" />

  1. 在【SuperMap iPortal 安装目录】/conf/web.xml 中配置会话过期时间。若已存在无需重复添加,只需按需修改过期时间。

    <session-config>

      <session-timeout>30<session-timeout>

    <session-config>

请参见