在 iPortal 安装包的配置文件 iportal.xml中启用独立代理后,管理员仍需在服务代理安装包中配置服务代理、可选择地配置服务访问统计功能和代理服务缓存功能。
服务代理配置
在目录 %SuperMap iPortal_Proxy_HOME%/webapps/ROOT/WEB-INF 下打开配置文件 iportal-proxy.xml 并配置 <serviceProxy> 子节点元素,示例如下:
<IportalConfig>
...
<serviceProxy>
<rootUrlPostfix>portalproxy</rootUrlPostfix>
<scheme>http</scheme>
<httpConnPoolInfo>
<maxTotal>200</maxTotal>
<defaultMaxPerRoute>100</defaultMaxPerRoute>
<connectionTimeout>30000</connectionTimeout>
<socketTimeout>30000</socketTimeout>
</httpConnPoolInfo>
...
</serviceProxy>
</IportalConfig>
- <rootUrlPostfix>:为代理服务根地址设置统一的后缀名,需要与 iPortal 安装包中设置的后缀名一致( %SuperMap iPortal_HOME%/webapps/iportal/WEB-INF/ iportal-.xml 文件中 <serviceProxy>节点下的 <rootUrlPostfix>配置项 )。默认的后缀名为:portalproxy,完整的代理服务地址例如:http://192.168.120.40:8195/portalproxy/iserver/services/map-changchun/rest,您可以根据实际需要设置该后缀名,也可以设置为空值,即不设置后缀名。
- <httpConnPoolInfo>:代理服务的连接池设置项,用于设置代理服务内部的 HttpClient 连接池。调整该节点下的各个设置项,从而提升代理服务的并发性能。
- <maxTotal>:设置整个连接池最大连接数。默认值是:100。您可以根据门户最大并发访问用户数来设置。
- <defaultMaxPerRoute>:对于一个路由地址,设置最多存在几个连接。默认值是:10。例如:您可以根据门户中单个服务的最大并发访问用户数来设置。
- <connectionTimeout>:代理转发请求时,与服务器间建立连接的超时时间,单位为 ms。默认值是:30000。您可以根据网络环境设置。
- <socketTimeout>:代理转发请求时,从服务器读取数据的超时时间,单位为 ms。默认值是:30000。您可以根据网络环境设置。
注意:
- 启用服务代理后,在浏览器窗口输入 iPortal 门户首页地址:http://<server>:<port>/iportal(server 取决于部署 iPortal 的服务器的 IP,port 取决于 server.xml 文件(位于 %SuperMap iPortal_HOME%\conf\server.xml )中配置的端口号,与上述代理配置项无关)即可访问 iPortal 首页。
- 停用服务代理后,需要重启 iPortal 服务,设置才会生效。
代理服务访问统计配置
iPortal 启用服务代理功能后,支持对代理服务进行访问统计,记录代理服务的访问次数。管理员需做如下配置:
- 通过 iportal-proxy.xml 配置文件中的 <enableAccessStatistics> 子节点元素,设置是否开启代理服务访问统计功能。
<IportalConfig>
...
<serviceProxy>
...
<!-- “代理访问统计”功能设置,默认开启 -->
<enableAccessStatistics>true</enableAccessStatistics>
</serviceProxy>
</IportalConfig>
- <enableAccessStatistics>:设置是否开启代理服务访问统计功能,默认值:true,开启。
- 在 %SuperMap iPortal_Proxy_HOME%/bin/catalina.bat(Linux 系统是catalina.sh)文件中添加环境变量 iportalRootUrl, 指定 iPortal 服务的实际根地址,如下所示:
set iportalRootUrl=http://<server>:<port>/iportal
代理服务缓存配置
配置了服务代理功能后,为了进一步提高代理后 GIS 服务的访问速度,iPortal 提供了代理服务缓存功能,是对数据库查询结果的缓存(关于数据库的配置请参见:数据库配置),分别对使用很频繁且耗时的权限验证的结果和查询的代理服务地址与对应的原始服务地址的映射关系进行缓存,将查询结果存储在缓存中。
iPortal 独立部署的服务代理提供了 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 安装完成后,管理员可通过 iporta-proxyl.xml 文件中的 <cacheConfig> 子节点元素,设置使用 Redis 缓存。Redis 缓存配置已经写好(默认未启用),如下所示。
<serviceProxy>
...
<cacheConfig>
<enable>true</enable>
<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>
</cacheConfig>
</serviceProxy>
- <enable>:设置是否开启服务代理缓存功能,默认值:false,未开启
- <type>:设置缓存类型,字符需要大写,默认值:REDIS
- <cacheServerConfig>:缓存服务器配置
- <nodes>:设置 Redis 服务节点,Redis 若要使用集群,nodes节点可以配置多个 host:port,以“|”分隔,否则只需配置一个 host:port
- <timeout>:Redis 服务连接超时时间,单位:ms
- <password>:Redis 服务的访问密码
- <maxTotal>:可用连接 Redis 实例的最大数目
- <maxIdle>:控制一个 Pool(连接池)最多有多少个状态为 idle(空闲的)的 Jedis 实例
- <maxWaitMillis>:等待可用连接的最大时间,单位:ms,默认值:-1,表示永不超时
- <testOnBorrow>:在 borrow 一个 Jedis 实例时,是否提前进行 validate 操作,默认值:true,表示得到的 Jedis 实例均是可用的。不建议对该参数进行修改。
请参见