SuperMap iPortal 内置的服务代理配置

发送反馈


SuperMap iPortal 内置的注册服务代理是指 iPortal 产品包自带的注册服务代理功能,通过简单的配置,即可使用注册服务代理功能;此外,还提供了代理服务访问统计功能,支持记录代理服务的访问次数,按服务访问次数排序等;还支持代理服务以 HTTPS 协议启用;为了进一步提高代理后 GIS 服务的访问速度,iPortal 还提供了代理服务缓存功能。启用注册服务代理功能后,为了使代理服务性能更优,建议您使用 MySQL/Oracle/PostgreSQL 数据库存储门户数据,关于数据库的配置请参见:数据库配置

注册服务代理配置

作为 iPortal 门户的管理员,可以通过以下两个步骤进行注册服务的代理配置:

  1. 管理员通过 %SuperMap iPortal_HOME%/webapps/iportal/WEB-INF 目录下的 iportal.xml 文件中的 <serviceProxy> 子节点元素,设置是否启用服务代理。详情请参见:iPortal 配置文件说明

具体示例如下所示:

<IportalConfig>
   ...
   <serviceProxy>
       <enable>false</enable>
       <enableBuiltinProxy>true</enableBuiltinProxy>
       <port>8195</port>
       <rootUrlPostfix>portalproxy</rootUrlPostfix>
       <httpConnPoolInfo>
            <maxTotal>100</maxTotal>
            <defaultMaxPerRoute>10</defaultMaxPerRoute>
      </httpConnPoolInfo>
   ...
   </serviceProxy>
</IportalConfig>

如果 iPortal 运行在双网卡或多网卡的网络环境中,希望通过不同 ip 访问 iPortal 时,注册服务代理地址会动态的显示 ip 地址,则需在以上配置的基础上,在<serviceProxy>节点下增加<proxyServerRootUrl>节点,具体配置如下:

<serviceProxy> 
    <enable>true</enable>
    <enableBuiltinProxy>true</enableBuiltinProxy> 
    <port>8195</port>
    <rootUrlPostfix>portalproxy</rootUrlPostfix>
    <proxyServerRootUrl>http://{ProxyHost}[:port]</proxyServerRootUrl> 
    <httpConnPoolInfo> 
      <maxTotal>100</maxTotal> 
      <defaultMaxPerRoute>10</defaultMaxPerRoute> 
    </httpConnPoolInfo>
        <!-- “代理访问统计”功能设置,默认不开启 -->
        <enableAccessStatistics>false</enableAccessStatistics> 
  </serviceProxy>

其中,{ProxyHost} 是占位符,会动态显示 ip 地址,[:port] 变量表示端口,填写代理后的服务监听端口即可,例如:<proxyServerRootUrl>http://{ProxyHost}:8195</proxyServerRootUrl>

  1. 配置 context.xml 文件(位于 %SuperMap iPortal_HOME%\conf 目录下),对<Context> 节点做如下修改,通过设置 iPortal 主进程与代理进程 Session 的 Cookie 路径,使两者之间可以共享 Session,保存并重启 iPortal 服务。
<Context sessionCookiePath="/">...</Context>

注意

代理服务访问统计配置

iPortal 启用注册服务代理功能后,还支持对代理服务进行访问统计,记录代理服务的访问次数。管理员通过 iportal.xml 配置文件中的 <enableAccessStatistics> 子节点元素,设置是否开启代理服务访问统计功能。详情请参见:iPortal 配置文件说明

<IportalConfig>
   ...
   <serviceProxy>
       <enable>true</enable>
       <enableBuiltinProxy>true</enableBuiltinProxy>
       ...
      <!-- “代理访问统计”功能设置,默认不开启 -->
      <enableAccessStatistics>false</enableAccessStatistics>
   </serviceProxy>
</IportalConfig>

代理服务以 HTTPS 协议启用配置

SuperMap iPortal 启用服务代理功能后,默认使用的是 http 协议启用代理服务,也就是说,如果您注册的是 https 服务,那么该服务经 iPortal 代理后,将以 http 协议启用。门户管理员可以通过如下设置使用 https 协议启用代理服务:

将 iportal.xml 配置文件中<serviceProxy>元素中的如下注释部分打开:

     <serviceProxy>
      ...
        <!-- 设置使用什么协议启动代理服务,默认使用http协议。若设置https协议,需设置httpsSetting-->
        <!-- <scheme>http</scheme>
                   <httpsSetting>
                         <keyStorePath>D:\key.keystore</keyStorePath>
                         <keyStorePassword>123456</keyStorePassword>
                   </httpsSetting>  -->
    ...
    </serviceProxy>

打开注释后,做如下修改:

<serviceProxy>
      ...
        <!-- 设置使用什么协议启动代理服务,默认使用http协议。若设置https协议,需设置httpsSetting-->
        <scheme>https</scheme>
                 <httpsSetting>
                        <keyStorePath>D:\key.keystore</keyStorePath>
                        <keyStorePassword>123456</keyStorePassword>
                 </httpsSetting>
    ...
    </serviceProxy>

代理服务缓存配置

配置了注册服务代理功能后,为了进一步提高代理后 GIS 服务的访问速度,iPortal 提供了代理服务缓存功能,是对数据库查询结果的缓存(关于数据库的配置请参见:数据库配置),分别对使用很频繁且耗时的权限验证的结果和查询的代理服务地址与对应的原始服务地址的映射关系进行缓存,将查询结果存储在缓存中。

SuperMap iPortal 提供了两种缓存方式,Ehcache 缓存和 Redis 缓存。默认开启的是 Ehcache 缓存,您无需进行任何配置,可直接使用。详情请参见:iPortal 配置文件说明

Ehcache 缓存配置

Ehcache 缓存的配置信息如下所示:

<serviceProxy>
    ...
    <cacheConfig>
        <enable>true</enable>
        <type>EHCACHE</type>
        <cacheServerConfig>
            <ehcacheConfigPath>./WEB-INF/iportal-ehcache.xml</ehcacheConfigPath>
            ...
        </cacheServerConfig>
    </cacheConfig>
</serviceProxy>

Redis 缓存配置

在配置 Redis 缓存之前,需要先安装 Redis,关于 Linux 版本的 Redis 下载和安装请参见:https://redis.io/download

本示例使用的是 Windows 版的 Redis。Redis 没有官方的 Windows 版本,但是微软开源技术团队(Microsoft Open Tech group)开发和维护着这个 Win64 的版本,下载地址:https://github.com/MicrosoftArchive/redis/releases。

在下载后的 Redis 文件夹中双击 redis_server.exe 文件,启动 Redis 服务,为保证 iPortal 代理服务可用,Redis 服务需一直保持运行状态。

Redis 安装完成后,管理员可通过 iportal.xml 文件中的 <cacheConfig> 子节点元素,设置使用 Redis 缓存。其中,Redis 缓存配置已经写好,直接打开注释即可。如下所示,您只需将 <cacheName>和<ehcacheConfigPath> 子节点注释掉或者删掉,将 Redis 缓存配置信息的注释符号去掉即可。

<serviceProxy>
    ...
    <cacheConfig>
        <enable>true</enable>
        <type>REDIS</type>
        <cacheServerConfig>
            <server>
               <nodes>192.168.112.231:7001</nodes>
               <timeout>3000</timeout>
               <password></password>
            </server>
            <jedisPoolConfig>
               <maxTotal>2048</maxTotal>
               <maxIdle>128</maxIdle>
               <maxWaitMillis>-1</maxWaitMillis>
               <testOnBorrow>true</testOnBorrow>
            </jedisPoolConfig>
        </cacheServerConfig>
    </cacheConfig>
</serviceProxy>

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

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

iPortal 内置的代理服务支持两种方式来存储登录用户的 Cookie 信息:Ehcache 缓存和 Redis 缓存。默认开启的是 Ehcache 缓存,您无需进行任何配置,可直接使用。详情请参见:iPortal 配置文件说明

Ehcache 缓存配置

Ehcache 缓存的配置信息如下所示:

<IportalConfig>
    ...
    <cookieStorage>
        <type>EHCACHE</type>
        <cacheServerConfig>
            <ehcacheConfigPath>./WEB-INF/iportal-ehcache.xml</ehcacheConfigPath>
            ...
        </cacheServerConfig>
    </cookieStorage>
</IportalConfig>

Redis 缓存配置

如果您在代理服务缓存配置中,已经下载和安装了 Redis 服务,那只需进行如下配置即可。

管理员可通过 iportal.xml 文件中的 <cookieStorage> 子节点元素,设置使用 Redis 缓存。如下所示,您只需将以下 <cacheServerConfig> 节点中的  Ehcache 的配置注释掉或删掉:

<cacheName>iportalProxyCache</cacheName>
<ehcacheConfigPath>./WEB-INF/iportal-ehcache.xml</ehcacheConfigPath>

Redis 缓存配置已经写好,直接打开注释即可。如下所示:

<IportalConfig>
    ...
    <cookieStorage>
        <type>REDIS</type>
        <cacheServerConfig>
            <server>
               <nodes>127.0.0.1:6379</nodes>
               <timeout>3000</timeout>
               <password></password>
            </server>
            <jedisPoolConfig>
               <maxTotal>512</maxTotal>
               <maxIdle>32</maxIdle>
               <maxWaitMillis>-1</maxWaitMillis>
               <testOnBorrow>true</testOnBorrow>
            </jedisPoolConfig>
         </cacheServerConfig>
      </cookieStorage>
    ...
</IportalConfig>