SuperMap iPortal 内置的服务代理配置 |
SuperMap iPortal 内置的服务代理是指 iPortal 产品包自带的服务代理功能,iPortal 产品包默认启用内置的服务代理功能;另外,iPortal 还提供了多种可选的功能扩展配置,包括:服务访问统计功能、以 HTTPS 协议启用服务代理的功能、服务代理缓存功能。在启用服务代理功能时,为了使服务代理性能更优,建议您选用 MySQL/Oracle/PostgreSQL 数据库存储门户数据,关于数据库的配置请参见:数据库配置。
iPortal 门户管理员可以通过 %SuperMap iPortal_HOME%/webapps/iportal/WEB-INF 目录下的 iportal.xml 文件中的 <serviceProxy> 子节点元素,设置服务代理相关配置。详情请参见:iPortal 配置文件说明。
具体示例如下所示:
...
<IportalConfig>
<serviceProxy>
<enable>true</enable>
<enableBuiltinProxy>true</enableBuiltinProxy>
<port>8195</port>
<rootUrlPostfix>portalproxy</rootUrlPostfix>
<httpConnPoolInfo>
<maxTotal>100</maxTotal>
<defaultMaxPerRoute>10</defaultMaxPerRoute>
<connectionTimeout>30000</connectionTimeout>
<socketTimeout>30000</socketTimeout>
</httpConnPoolInfo>
...
</serviceProxy>
</IportalConfig>
如果您的 iPortal 运行在双网卡或多网卡的网络环境中,希望通过不同 ip 访问 iPortal 时,服务代理地址可以动态显示 ip 地址,则需在以上配置的基础上,在<serviceProxy>节点下增加<proxyServerRootUrl>子节点(粗体部分代码),具体配置如下:
<IportalConfig>
...
<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>
<connectionTimeout>30000</connectionTimeout>
<socketTimeout>30000</socketTimeout>
</httpConnPoolInfo>
...
</serviceProxy>
</IportalConfig>
其中,{ProxyHost} 是占位符,会动态显示 ip 地址,[:port] 变量表示端口,填写代理后的服务监听端口即可,例如:<proxyServerRootUrl>http://{ProxyHost}:8195</proxyServerRootUrl>
注意:
iPortal 启用服务代理功能后,还支持对服务进行访问统计,记录服务的访问次数。管理员通过 iportal.xml 配置文件中<serviceProxy>子节点下的<enableAccessStatistics> 子节点元素,设置是否开启服务访问统计功能。详情请参见:iPortal 配置文件说明。
<IportalConfig>
...
<serviceProxy>
<enable>true</enable>
<enableBuiltinProxy>true</enableBuiltinProxy>
...
<!-- “代理访问统计”功能设置,默认开启 -->
<enableAccessStatistics>true</enableAccessStatistics>
</serviceProxy>
</IportalConfig>
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 缓存的配置信息如下所示:
<serviceProxy>
...
<cacheConfig>
<enable>true</enable>
<type>EHCACHE</type>
<cacheServerConfig>
<ehcacheConfigPath>./WEB-INF/iportal-ehcache.xml</ehcacheConfigPath>
...
</cacheServerConfig>
</cacheConfig>
</serviceProxy>
在配置 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 中的服务代理能够正常访问,您还需对登录用户的 Cookie 信息进行存储配置,实现 iPortal 与服务代理的 session 共享,即:用户登录到 iPortal 门户后,即可访问服务代理。
iPortal 内置的服务代理支持两种方式来存储登录用户的 Cookie 信息:Ehcache 缓存和 Redis 缓存。默认开启的是 Ehcache 缓存,您无需进行任何配置,可直接使用。详情请参见:iPortal 配置文件说明。
Ehcache 缓存的配置信息如下所示:
<IportalConfig>
...
<cookieStorage>
<type>EHCACHE</type>
<cacheServerConfig>
<ehcacheConfigPath>./WEB-INF/iportal-ehcache.xml</ehcacheConfigPath>
...
</cacheServerConfig>
</cookieStorage>
</IportalConfig>
如果您在服务代理缓存配置中,已经下载和安装了 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>