SuperMap iServer 的主要配置信息位于 WEB-INF(【SuperMap iServer 安装目录】\webapps\iserver\WEB-INF)文件夹下,关于目录说明请参考:安装后目录说明

 

配置文件简介

WEB-INF 文件夹下存储了服务器及其所提供服务的配置信息,文件夹结构如下:

其中:

  • backup 文件夹:存放服务器配置信息的备份,详见备份与恢复服务器配置
  • config 文件夹:配置文件,包括适用于 Bing Maps、天地图、云服务等的缓存方案。
  • iserver-datacatalog-manifests:存放数据目录服务下数据的配置信息。
  • lib 文件夹:存放 SuperMap iServer 运行时所依赖的 jar 文件。
  • worker-lib:存放启动多进程 Worker 节点时所需的 servlet-api.jar。

各个配置文件的主要内容如下表所示:

配置文件的内容

文件名 描述
iserver-datacatalog.xml 数据目录服务配置文件,包含数据目录服务中的数据存储的配置以及其他的一些配置信息。
iserver-log4j.properties 日志的配置文件。
iserver-rest-appContext.xml REST 应用配置文件,其中定义了表述类型与 URI 后缀的映射关系。
iserver-rest-resources.xml 扩展资源的资源配置文件,用户可在其中指定扩展资源的名称、URI、类型、表述生成器名称、参数解析器名称等等。
iserver-services-interfaces.xml 服务接口实例,包含 iserver-services-samples.xml 和 iserver-services-user.xml 中所用到的接口实例,如:rest、restjsr、wms111、wms130、wfs100、wmts100、wmts-china、wcs111、wcs112、handler、gpserver。
iserver-services-samples.xml 产品提供的示例服务的配置信息。
iserver-services.xml 用户发布的服务的配置信息。此文件命名时只要以“iserver-services”开头,服务器即可识别为服务配置文件,且支持多个用户自定义服务配置文件,如 iserver-services-1.xml,iserver-services-2.xml。
iserver-services-buildin.xml iServer内置服务(如Geometry服务、map服务)的配置信息。
iserver-system.xml SuperMap iServer 系统级配置,包括元信息、集群、kml 样式配置等。
web.xml SuperMap iServer 的初始化配置文件,定义了功能与类的映射关系。
iserver-security.db 用于存储用户、角色等信息的数据库。
iserver-services.db 用户存储服务授权信息的数据库。

服务配置文件

SuperMap iServer 的服务均由服务提供者、服务组件、服务接口三个层次组成,所有服务的配置信息存储于服务配置文件中,主要是用于提供接口实例的服务接口配置文件(iserver-services-interfaces.xml)、示例服务的配置文件(iserver-services-samples.xml)以及用户发布服务的配置文件(iserver-services.xml)。其中后两者结构类似,此不赘述。

通过服务配置文件,您可以:

服务接口配置文件

服务接口配置文件 iserver-services-interfaces.xml,包含服务接口实例,根节点为 <application> 元素,包括<interfaces>子节点元素,其中的每一个 interface 元素用于配置一个具体的服务接口,包含以下属性:

  • name 属性,服务接口的名称。
  • class 属性,服务接口的实现类。
  • config 元素,服务接口的配置信息。

示范服务实例配置文件

示范服务实例配置文件 iserver-services-samples.xml,包含产品提供的示范服务实例的配置信息,根节点为 <application> 元素,包括以下子节点元素:

1. <components>

其中的每一个 component 元素用于配置一个具体的服务组件。

  • name 属性,服务组件的名称。
  • alias 属性,服务组件的别名,可设置为中文,如“京津土地利用”。
  • class 属性,服务组件的实现类。
  • interfaceNames 属性,服务组件绑定的服务接口。
  • providers 属性,服务组件所使用的服务提供者。
  • config 元素,服务组件的配置信息。它包含 class、outputPath、outputSite、workspacePath 等属性,具体请参见通过 XML 文件配置服务组件。当不包含 outputPath 和 outputSite 属性时,系统会采用<properties>元素中的相应值。数据服务组件中还包含 editable 属性,它用来设置数据服务组件是否可编辑。当 editable 为 true 时可编辑。

注:用户发布服务的配置文件(iserver-services.xml)的 component 元素除以上属性外还支持 initPriority 属性,该属性代表 GIS 服务启动的优先级,优先级数值越高启动 iServer 时 GIS 服务启动顺序越靠前。

2. <providers>

其中的每一个 provider 元素用于配置一个具体的服务提供者。

  • name 属性,服务提供者的名称。
  • class 属性,服务提供者的实现类。
  • inner-providerNames 元素,当使用集群服务提供者或者聚合服务提供者时,分别用来设置集群服务提供者所集群的服务提供者,和聚合服务提供者所聚合的服务提供者。
  • config 元素,服务提供者的配置信息,包括对工作空间的设置。它包含 class、outputPath、outputSite 等属性,具体请参见通过 XML 文件配置服务提供者。当不包含 outputPath 和 outputSite 属性时,系统会采用<properties>元素中的相应值。

3. <componentSets>

其中的每一个 componentSet 元素用于配置一个服务组件集合,每个服务组件集合可以引用多个服务组件。

4. <providerSets>

其中的每一个 providerSet 元素用于配置一个服务提供者集合,每个服务提供者集合可以引用多个服务提供者。

内置服务的配置文件

内置服务配置文件 iserver-services-buildin.xml,包含 iServer 提供的几何服务的配置信息,根节点为 <application> 元素,包括以下子节点元素:

1. <componentSets>

其中的每一个 componentSet 元素用于配置一个服务组件集合,每个服务组件集合可以引用多个服务组件。

2. <providerSets>

其中的每一个 providerSet 元素用于配置一个服务提供者集合,每个服务提供者集合可以引用多个服务提供者。

3. <components>

其中的每一个 component 元素用于配置一个具体的服务组件。包含:

4. <providers>

其中的每一个 provider 元素用于配置一个具体的服务提供者。

系统配置文件

iserver-system.xml 包含了系统的配置信息,根节点为 <server> 元素,<server>节点目前主要包含 <properties> 、<management>、<hosts>、<clustering>、<harLog>、<queryFilter> 等子节点元素。

1. <properties> 元素

用于设置 SuperMap iServer 配置系统中全局性质的属性信息,如服务的默认输出路径和访问站点、环境检查与否的设置:

  • <outputPath>:缓存图片的输出路径,其值为../webapps/iserver/output。当未给具体的服务指定缓存图片输出路径时,SuperMap iServer 会采用该默认值。
  • <outputSite>:地图图片的发布站点,即访问缓存图片的根目录 URI,其值默认为 http://{ip}:{port}/iserver/output/。当未给具体的服务指定图片发布站点时,SuperMap iServer 会采用该默认值。如开启了 HTTPS 加密通信则需要将该值改为  https://{ip}:{port}/iserver/output/。
  • <realspaceSecurityEnabled>:三维数据安全控制是否启用,默认为 true。
  • <realspaceCacheAccessKey>:三维数据密码。
  • <encryptionAlgorithm>:集群相关敏感信息(包括集群安全密钥 ClusterSecurity、集群 token ClusterSetting、集群报告器 token ReporterSetting)、三维数据密码、邮件通知功能中的敏感信息加密算法的配置节点。可选值为 AES 和 SM4,默认值为 AES,分别指使用 AES/GCM/NoPadding 算法进行加密和使用 SM4/CTR/PKCS7Padding 算法进行加密。若不配置或配置为其他值,则默认使用 DES 算法进行加密。
  • <envCheckEnabled>:设置是否进行环境检查,默认为 true。
  • <restartWhenCrash>:服务非正常关闭后是否自动重启服务,默认为 true。
  • <checkDatasourceConnectionInterval>:iServer 检查“数据库型 工作空间”是否改变或“数据库型数据源”是否断开的时间间隔,单位为秒,小于或等于0时表示从不检查,默认为30秒。
  • <refreshDatasource>:设置是否开启刷新数据库型数据源,默认为false,即不开启。需要搭配 checkDatasourceConnectionInterval 使用,也就是当 checkDatasourceConnectionInterval 参数值大于 0 且 refreshDatasource 为 true 时生效。
  • <{iServerData1}>、<{iServerDataPath1}>:代表工作空间文件或者路径的变量。详见预设本地工作空间路径
  • <enableSQLFilter>:是否开启 SQL 注入检测,默认为 false,data 资源下的 featureResults 子资源的 SQL 查询、map 资源下的 queryResults 子资源的所有查询都支持该参数。
  • <deniedFiles>:上传 zip 文件时禁止的内部文件格式,默认禁止的内部文件类型为:<deniedFiles>.jsp,.sh,.exe,.bat,.html,.js,.war,.class,.jar,.shtml,.htm,.php,.aspx,.asp,.asa,.jspx,.cgi</deniedFiles>。修改该配置需重启 iServer 方能生效。(已过时)
  • <checkServiceStorageConnectionInterval>:iServer 检查存储服务配置信息的数据库是否断开的时间间隔,单位为秒,<=0时表示从不检查;该值大于0小于20时,按20s的时间间隔进行检查。

其中,全局属性 outputPath、outputSite 也可以通过服务管理器 WebManager 来设置,请参考全局属性设置

  • <encryptionAlgorithm>:配置使用 AES/GCM/NoPadding 进行加密,其值为 AES 。不配置或配置其他项,则默认使用 DESede 加密。
  • <maxFeatureWriteThreadCount>:配置数据服务提供者的最大并发访问的线程数(可选),默认为 1,即最大并发访问的线程数为 1 个。您可以根据服务器的可用资源情况对该值进行调整。请注意,此参数应小于被使用数据库的最大连接数。注意,当 iserver-system.xml 及服务提供者中均配置了该参数时,将优先使用提供者中的配置。
  • <writePermitTimeout>:配置数据服务提供者的等待获取写许可的超时时间(可选),单位为秒,默认为 120,即等待获取写许可的时间大于 120 秒即为超时。 注意,当 iserver-system.xml 及服务提供者中均配置了该参数时,将优先使用提供者中的配置。
  • <poolSize>:配置地图服务提供者的线程池大小 (可选),默认为 1。
  • <maxAttachmentSize>:配置数据服务中修改要素时上传的附件文件的最大限制,单位为M,默认值为100,取值区间为正整数。
  • <tokenName>:配置 iServer 密钥的名称,系统默认名称为 token,您可以根据项目需要配置为其他名称,配置完成后,需要重启 iServer 后生效。关于 token 的使用请参考:基于 Token 的认证
  • <forceStop>:开启资源定时回收后,是否强制停止 iServer,该参数为 true 表示会强制停止 iServer,默认为 false。
  • <fastjson.autotype.allowPrefixs>:使用自定义扩展类(类型名称前缀不为 com.supermap)且无法正确序列化 alibaba fastjson 时,可自定义添加 autotype 的类型名称前缀,支持设置多个前缀,用 ”;“分隔,如 com.huawei;com.apache。
  • <fileManagerWorkDir>:文件管理目录,iServer、iEdge 系统可浏览可上传的目录,未设置时不限文件目录范围,默认为空。配置后,文件选择器只能访问该路径的子目录,并且返回的值是以占位符开头的路径,如 ${fileManagerWorkDir}/sample/data/China/China100.smwu ;仅能上传到该目录下,路径参数使用相对路径时,以 fileManagerWorkDir 为根目录所指定的目录下创建。注意:1. 当通过环境变量方式配置了该参数时,无法再通过配置文件修改其值。2. 使用 Windows 版本时,通过在 startup.bat 中设置 FILEMANAGERWORKDIR 环境变量含中文时,若出现乱码情况,可在其前后加上 chcp 65001、chcp 936,详见 自定义配置文件管理根目录 。3、更改根目录配置将会影响已经发布的服务正常使用,根据不同情况需要进行以下操作:若已经设置过根目录,更改设置需要手动将原目录文件迁移到新目录中,且保留原文件目录树结构;若要取消根目录设置,需手动替换配置文件中的占位符 ${fileManagerWorkDir} 为实际路径。4、此项修改需要手动重启 iServer、iEdge 才能生效。5、在初始化之后,iEdge 中只能通过修改配置文件中此设置进行修改。
  • <releaseIdleDatasetIntervalMinutes>:配置空闲数据集自动释放功能,大于0即为有效值,表示启用该功能,单位:分钟。默认未启用该功能。

2. <uploadFileSetting>元素

用于统一设置 SuperMap iServer 文件上传相关配置,如上传文件最大体积、解压后最大体积、重名文件是否覆盖、存放目录等:

  • <uploadSize>:上传文件最大体积,默认2048MB,支持正整数,单位Mb;不设置该值视为无限制。
  • <uploadUnzipSize>:上传文件解压后体积最大值,默认为5120MB,支持正整数,单位Mb;不设置该值视为无限制。
  • <uploadOverwrite>:上传重名文件是否覆盖,默认为否。
  • <uploadDir>:上传文件的存放目录。配置后,文件选择器只能访问该路径的子目录,并且返回的值是以占位符开头的路径,如 ${uploadDir}\sample\data\China\China100.smwu 。优先级:fileManagerWorkDir > uploadDir。(已过时)
  • <deniedFiles>:上传zip文件时禁止的内部文件格式,默认禁止的内部文件类型为:<deniedFiles>.jsp,.sh,.exe,.bat,.html,.js,.war,.class,.jar,.shtml,.htm,.php,.aspx,.asp,.asa,.jspx,.cgi</deniedFiles>。修改该配置需重启 iServer 方能生效。

3. <management>元素

用于配置 SuperMap iServer 的元数据信息,iServer 的元数据信息含服务组件类型元数据(<component-types>)、服务提供者类型元数据(<provider-types>)和服务接口类型元数据(<interface-types>),以及安全配置(<security>)。

安全配置节点示例如下所示:

    <security> 
      <accessControl> 
        <SecuritySetting> 
          <!-- 验证码配置,默认为关闭 -->
          <captchaConfig>
              <enable>false</enable>
              <type>IMAGE_CAPTCHA</type>
              <length>4</length>
              <expireInSeconds>120</expireInSeconds>
          </captchaConfig>
          <isSecurityEnabled>true</isSecurityEnabled>
          <disableRememberMe>false</disableRememberMe>
          <cacheInfoToMemory>true</cacheInfoToMemory>
          <tokenKey>4da7ef8f2e734f56ab2ecfae20cce49a</tokenKey>
          <PBKDF2Iterations>1000</PBKDF2Iterations>
          <!-- 密码防暴力破解设置 -->
          <passwordProtectedSetting> 
            <passwordDiffCount>5</passwordDiffCount>  
            <userPasswordErrorCounterSetting> 
              <passwordErrorProtectEnable>false</passwordErrorProtectEnable>  
              <lockedTime>1200000</lockedTime>  
              <periodLength>600000</periodLength>  
              <allowFailCountPerPeriod>5</allowFailCountPerPeriod> 
            </userPasswordErrorCounterSetting> 
          </passwordProtectedSetting>
          <!-- 三段式根密钥配置 -->
          <rootSecretKeySetting> 
            <loadModelType>TRIPART</loadModelType>  
            <part3>[B@7e31062c</part3> 
          </rootSecretKeySetting> 
        </SecuritySetting> 
      </accessControl> 
      <!-- 安全信息存储配置 -->
      <storage class="com.supermap.server.config.SQLSecurityInfoStorageSetting"> 
        <type>MYSQL</type>  
        <connInfo> 
          <username>root</username>  
          <password>super123.</password>  
          <dbType>MYSQL</dbType>  
          <driverClass>com.mysql.jdbc.Driver</driverClass>  
          <jdbcUrl>jdbc:mysql://192.168.120.44:3306/supermap?useUnicode=true&characterEncoding=UTF-8</jdbcUrl>  
          <maxPoolSize>30</maxPoolSize>  
          <initialPoolSize>5</initialPoolSize>  
          <minPoolSize>5</minPoolSize>  
          <maxIdleTime>0</maxIdleTime>  
          <maxWait>3000</maxWait> 
        </connInfo> 
      </storage> 
      <!-- iServer 内置会话配置 -->         
      <session class="com.supermap.server.config.BuildInSessionSetting"> 
          <type>BuildIn</type>  
          <timeout>10000</timeout>  
          <checkLoggedInAnotherPlace>true</checkLoggedInAnotherPlace> 
          <loggedInAnotherPlaceProcessingStrategy>Notifying</loggedInAnotherPlaceProcessingStrategy> 
      </session> 
      <!-- iServer 加密算法及规格配置 -->                
      <encryption class="com.supermap.server.config.EncryptionSetting">           
        <serviceKeySettings>
          <serviceKeySetting>   
            <keyID>keyIDNAME</keyID>  
            <version>1.1</version>                     
            <algorithm>AES</algorithm>                     
            <keyLength>256</keyLength>                     
            <attributes>abcd</attributes>                 
          </serviceKeySetting>
        </serviceKeySettings>
        <sensitiveInfoKeySetting>
          <algorithm>SM4</algorithm>
          <keyLength>128</keyLength>
        </sensitiveInfoKeySetting>
      </encryption> 
    </security>

其中,

  • <captchaConfig>:用于设置登录时的验证码,默认关闭,具体参数包括:
  • <enble>:是否开启登录验证码
  • <type>:验证码类型,目前只支持图片验证码(即 IMAGE_CAPTCHA)
  • <expireInSeconds>:验证码过期时间,单位为秒
  • <length>:生成图片验证码的长度
  • <isSecurityEnabled>:用于设置安全控制是否启用;
  • <managementEnabled>:用于设置服务器管理相关能力。默认为 true,当为 false 时,禁用所有管理能力
  • <PBKDF2Iterations>:用于设置 PBKDF2 密码加密算法的迭代次数,当 iServer 启用 PBKDF2 加密后生效。
  • <tokenKey>:用于设置Token的共享密钥;
  • <disableRememberMe>:用于设置是否关闭登陆页面的“记住我”功能,默认值为 false,即“记住我”功能可用。该配置项需重启 iServer 生效。
  • <cacheInfoToMemory>:用于设置是否将所有用户信息缓存到内存,并从内存查询用户信息。默认值为 true,表示缓存所有用户信息到内存。如果用户数量比较大,建议设置为 false,用户信息不缓存到内存,实时从数据库查询,因为缓存所有用户信息需要大量的 SQL 查询,性能慢,只在具体查询时查询相关的数据即可;
  • <passwordProtectedSetting>:用于设置密码保护以防暴力破解,具体参数包括:
  • <passwordDiffCount>:密码不可与前N次重复次数,默认为5次。
  • <userPasswordErrorCounterSetting>:包括是否启用密码防暴力破解的<passwordErrorProtectEnable>参数,以及在时间周期(<periodLength>,默认6000000毫秒,即10分钟)内允许连续失败次数(<allowFailCountPerPeriod>,默认为5次),自动解锁时间( <lockedTime>,单位为毫秒,默认1200000,即20分钟)。
  • <rootSecretKeySetting>:根密钥配置。该配置需在 iServer 首次初始化前进行配置,否则无法生效。具体参数包括:
  • <loadModelType>:根密钥类型,有 KEYSTORE 方式和 TRIPAR T三段式,默认值为 KEYSTORE。TRIPART 三段式根密钥是由 part1、part2 和 part3 三段密钥组合动态生成。
  • <part3>:第三段密钥,默认在 iServer 启动时通过安全随机数生成,当根密钥类型为 TRIPART 时可用。
  • <encryption>:用于设置加密算法及规格,目前支持配置 GIS 服务加密算法设置和外置密钥设置,详见:加密算法配置。此外,在此节点中还支持通过 <sensitiveInfoKeySetting> 节点对服务配置和系统配置中的敏感信息加密方式进行配置,范围包括服务配置中的密码、token;安全信息配置存储、服务配置信息存储、会话信息存储、临时资源存储、注册入 iServer 的数据库或瓦片源的连接信息中的用户名密码及系统设置中的共享密钥。具体包含以下配置项:
  • <algorithm>:加密算法名。支持三段式完整写法,如:SM4/CTR/PKCS7Padding;也支持缺省写法,如:SM4。iServer 内置加密算法为 SM4 和 AES,默认为 AES。
  • <keyLength>:密钥长度,单位为 b。对于 iServer 内置的加密算法,SM4 的默认密钥长度为 128,AES 则为 256。
  • <storage>:用于设置安全信息的存储位置,包含用于指定存储类型的<type>字段,目前支持SQLITE、MYSQL、PostgreSQL 、Kingbase、GaussDB、Vastbase ,以及配置数据库连接信息的<connInfo>。以MYSQL数据库为例,连接信息具体参数包括:
  • <driverClass>:数据库的连接驱动类,为com.mysql.jdbc.Driver
  • <jdbcUrl>:连接数据库驱动的URL连接形式为 jdbc:mysql://{ip}:{port}/{database}?useUnicode=true&characterEncoding=UTF-8。其中,{ip}为MySQL 所在机器的 IP 地址,{port}为 MySQL 的服务端口,默认为3306,{database}为数据库名,可设置为您已经创建的用来存储用户信息的数据库。这些参数您可以根据您安装的 MySQL 的实际情况来配置。
  • <username>:用户名,具有数据库{database}访问权限的用户。
  • <password>:该用户的密码。
  • <initialPoolSize>初始化的连接池大小,即初始化的连接数。默认值为5。
  • <maxPoolSize>:连接池在同一时刻内所提供的最大活动连接数。您可以根据 MySQL 服务器的性能来设置该值,默认为最多30个活动连接。
  • <minPoolSize>:连接池在同一时刻内所提供最小活动连接数。默认值为5。
  • <maxIdleTime>:空闲连接的等待时间,即当前连接空闲下来时,可保留的时间,单位为毫秒。超过该时间未操作,则自动关闭当前连接。默认值为3000。如果设为0,则永远保留空闲连接。
  • <maxWait>:异常连接的等待时间,即连接异常时,可等待的时间,单位为毫秒。在该时间段内连接异常未恢复,则自动关闭当前连接。默认值为300000。
  • <useStoredAdmin>:针对数据库中已经存储了初始化管理员(例如:admin1)的情况,两种选择:默认设为False,则将使用当前iServer的初始化管理员(admin2),同时覆盖数据库中存储的初始化管理员(数据库中存储的管理员将被改写为 admin2);如果为True,将使用数据库中已经存储的初始化管理员(admin1),而不是当前 iServer 的管理员(例如:admin2)。
  • <session>:用于设置会话信息的存储位置、会话超时时间等会话配置信息。目前支持 iServer 内置会话和 Redis 会话、PostgreSQL会话 、Kingbase会话、GaussDB会话、Vastbase会话六种可选配置方式 ,您可以选择其中一种进行配置。

  1) 对于 iServer 内置会话,具体配置参数包括:

  • <type>:会话类型,默认值为 BuildIn,表示 iServer 内置会话。
  • <timeout>:iServer 内置会话超时时间配置,即登录 iServer 后处于空闲状态的时间,单位毫秒。超时后,会话结束,iServer将退出登录。该配置仅在开启异地登录告警情况下生效,即设置<checkLoggedInAnotherPlace>为 true。
  • <checkLoggedInAnotherPlace>:是否开启异地登录告警,true 表示开启异地登录告警,默认为 false。配置后需重启 iServer 方可生效。
  • <loggedInAnotherPlaceProcessingStrategy>:异地登录处理策略,设置 <checkLoggedInAnotherPlace> 为 true,此配置才生效。可选值包括:Notifying、LatestLoggedInFirst。Notifying,通知模式,代表同一账号可同时登录到多台主机中,且在登录时会通知当前检测到该账号的异地登录情况;LatestLoggedInFirst,最新登录优先,代表同一账号同一时间只能登录到一台主机中,登录时也会通知当前检测到的异地登录情况。与通知模式不同之处在于,上一次在其他主机登录的账号会被自动注销。若开启了异地登录,即配置 checkLoggedInAnotherPlace 为 true,但未配置异地登录处理策略,默认会使用 Notifying 模式。

 2)对于 Redis 会话,具体配置参数包括:

  • <type>:会话类型,设置为 Redis。
  • <host>:Redis 数据库所在机器的 IP。
  • <port>:Redis 数据库服务端口号。
  • <user>:Redis 数据库用户名。
  • <password>:Redis 数据库密码。
  • <MaxActive>:连接池在同一时刻内所提供最大活动连接数 。
  • <maxIdle>:最大空闲连接数。数据库空闲连接的最大数量。
  • <maxWait>:当没有可用连接时,最大等待时间,单位毫秒,超时后将抛出异常。
  • <timeout>:客户端与数据库连接后,处于空闲状态的时间,单位毫秒。超时后,将断开连接。
  • <testOnBorrow>:使用连接时,检测连接是否可用;为true时,得到的连接均是可用的。
  • <checkLoggedInAnotherPlace>:是否开启异地登录告警,true 表示开启异地登录告警,默认为 false。
  • <loggedInAnotherPlaceProcessingStrategy>:异地登录处理策略,设置 <checkLoggedInAnotherPlace> 为 true,此配置才生效。可选值包括:Notifying、LatestLoggedInFirst。Notifying,通知模式,代表同一账号可同时登录到多台主机中,且在登录时会通知当前检测到该账号的异地登录情况;LatestLoggedInFirst,最新登录优先,代表同一账号同一时间只能登录到一台主机中,登录时也会通知当前检测到的异地登录情况。与通知模式不同之处在于,上一次在其他主机登录的账号会被自动注销。若开启了异地登录,即配置 checkLoggedInAnotherPlace 为 true,但未配置异地登录处理策略,默认会使用 Notifying 模式。

3)对于PostgreSQL、Kingbase、GaussDB、Vastbase会话,四者配置方法相同,以PostgreSQL为例,具体配置参数包括 :

  • <type>: 会话类型,设置为PostgreSQL
  • <checkLoggedInAnotherPlace>: 是否开启异地登录告警,true 表示开启异地登录告警,默认为 false。配置后需重启 iServer 方可生效。
  • <timeout>:PostgreSQL会话超时时间配置,即登录PostgreSQL后处于空闲状态的时间,单位毫秒。超时后,会话结束,PostgreSQL将退出登录。该配置仅在开启异地登录告警情况下生效,即设置<checkLoggedInAnotherPlace>为 true。
  • <jdbcUrl>:服务地址,设置格式:jdbc:posrgresql://{ip}:{port}/{database}
  • <tableName>:PostgreSQL 数据库会话信息存储表名
  • <user>:PostgreSQL 数据库用户名。
  • <password>:PostgreSQL 数据库密码。
  • <schemaName>:PostgreSQL 数据库模式名
  • <maxPoolSize>:连接池在同一时刻内所提供的最大活动连接数。您可以根据 PostgreSQL 服务器的性能来设置该值,默认为最多50个活动连接。
  • <minPoolSize>:连接池在同一时刻内所提供最小活动连接数。默认值为10。
  • <initialPoolSize>:初始化的连接池大小,即初始化的连接数。默认值为50。
  • <maxIdleTime>:空闲连接的等待时间,即当前连接空闲下来时,可保留的时间,单位为毫秒。超过该时间未操作,则自动关闭当前连接。默认值为3000。如果设为0,则永远保留空闲连接。
  • <maxWait>:异常连接的等待时间,即连接异常时,可等待的时间,单位为毫秒。在该时间段内连接异常未恢复,则自动关闭当前连接。默认值为3000。

3. <hosts>元素

用于配置 SuperMap iServer 服务的宿主。可包含多个<host>,一个 host 的示例如下:

<host port="8090" type="webapp" uriBase="/services">
        <interface-type>com.supermap.services.wms.WMSServlet</interface-type>
        <interface-type>com.supermap.services.rest.RestServlet</interface-type>
        <interface-type>com.supermap.services.wfs.WFSServlet</interface-type>
        <interface-type>com.supermap.services.wmts.WMTSServlet</interface-type>
</host>

其中,<interface-type>表示服务宿主中包含的服务类型,<host>的各项属性含义如下:

  • port 属性,服务宿主的端口号,用户通过该端口访问服务宿主包含的服务,跟 servlet 容器的端口号一致,并在访问 SuperMap iServer 服务时与 servlet 容器的端口号实时同步。
  • type 属性,服务宿主的类型,“webapp”表示这是一个 Web 服务(Web Service),还可取值 rmi,表示其他宿主类型。
  • uriBase 属性,服务宿主的根路径,从 servlet 的根目录算起。

4. <clustering> 元素

包含集群配置等应用。关于集群子节点相关元素的详细内容,请参考集群专题中利用配置文件管理集群

5. <harLog> 元素

用于配置服务访问日志,如是否启用服务访问日志,服务访问日志的文件名称,监控的服务 URI 地址的设置:

  • <enabled>:设置是否开启服务访问日志,默认为 false。
  • <name>:输出的服务访问日志的文件名称,默认名称为 iServerHTTPArchive,支持用户自定义。
  • <monitorURLs>:需要被监控的 SuperMap iServer 的服务 URL 地址。

6. <queryFilter> 元素

用于 SQL 查询时 attributeFilter 参数的过滤配置,防止 SQL 注入。这里的 SQL 注入,是指在进行 data 或 map 的 SQL 查询时,通过把非法的或违背用户意愿的字符串插入到 SQL 查询表达式中,欺骗服务器执行恶意的 SQL 命令。

  • <enabled>:设置是否启用 SQL 查询过滤,默认为 false。当 enabled 为 true,将默认禁用常量表达式、常量等价表达式、常量 IN 表达式、常量恒成立表达式等四类表达式,另外还将默认禁用部分威胁字符,禁用的字符包括 exec、insert、delete、update、join、union、master、truncate。除以上默认禁用的表达式和字符串外,您也可以通过 filterString 参数设置其他需要在 SQL 查询中禁用的字符串。
  • <filterString>:设置 SQL 查询过滤的字符串,支持任意字符串(数据操作语言(DML)、表达式、通配符、特殊字符等),以分号隔开,如:设置 <filterString>delete;SMID=.</filterString> 。用户在进行 data 或 map 的 SQL 查询时,如果在 SQL 查询表达式中出现了 ‘delete 或 SMID=任意值’ 字符串,系统会默认该条查询表达式非法并返回400参数异常,防止执行恶意的 SQL 命令,从而保护用户的数据安全。如果没有设置 SQL 查询过滤的字符串,在 SQL 查询表达式中系统会默认屏蔽掉分号。该配置项保存即可生效,无需重启 iServer

7. <repository>

用于设置临时资源的存储位置。详细信息请参考:临时资源的生命周期

8. <relayService> 元素

用于 iEdge 的中继服务配置,仅在 iEdge 产品中使用。

  • <enabled>:是否开启中继服务。
  • <isLocalPriority>:对于同名服务,是否优先使用本地服务。如果为 true,则优先使用本地服务,中继服务器中的同名服务将被隐藏;如果为 false,则优先使用中继服务,本地同名服务将被隐藏。
  • <remoteServices>:中继服务中的远程服务列表地址,格式如:http://<server>:<ip>/iserver/services。
  • <updateInterval>:中继服务动态更新的时间间隔,如果远程服务列表有变更,则中继服务会根据此时间间隔动态更新。单位为毫秒(ms),默认为60000ms。

9.<license>元素

用于保存当前iServe的许可信息,包括正在使用的版本及扩展服务许可。详见在iServer中选择许可。示例如下:

  <licenseMode>DefaultLicense</licenseMode>
  <license> 
    <enabledmodules>
        <string>ENTERPRISE</string> 
        <string>CHART</string>
        <string>NETWORK</string>
        <string>SPACE</string>
        <string>SPATIAL</string>
        <string>TRAFFIC_TRANSFER</string>
        <string>PLOT</string>
        <string>SITUATIONEVOLUTION</string>
        <string>SPATIAL_PROCESSING</string>
        <string>GEO_BLOCKCHAIN_SERVICE</string>
        <string>SPATIAL_STREAMING</string>
        <string>MACHINE_LEARNING_SERVICE</string>
        <string>IMAGE_SERVICE</string>
    </enabledmodules>
  </license> 

其中,

  • <licenseMode> 用于设置许可类型,包括:普通许可(DefaultLicense)、Web 许可(WebLicense) 以及云许可(CloudLicense) 等三种可选类型。
  • <enabledmodules> 中包含了使用的许可名称,具体包括:
  • "ENTERPRISE":高级版
  • "STANDARD":标准版
  • "CHART":海图服务扩展模块
  • "NETWORK":网络分析服务扩展模块
  • "SPACE":三维服务扩展模块
  • "SPATIAL":空间分析服务扩展模块
  • "TRAFFIC_TRANSFER":交通换乘服务扩展模块
  • "SPATIAL_STREAMING":流数据服务扩展模块
  • "SERVICE_NODE_ADDITION":服务节点扩展模块
  • "PLOT":动态标绘服务扩展模块
  • "SPATIAL_PROCESSING":分布式分析服务扩展模块
  • "SITUATIONEVOLUTION":态势推演服务扩展模块
  • "GEO_BLOCKCHAIN_SERVICE":空间区块链服务扩展模块
  • "MACHINE_LEARNING_SERVICE":机器学习服务扩展模块
  • "IMAGE_SERVICE":影像服务扩展模块
  • "THREEDDESIGNER_SERVICE":三维地理设计服务扩展模块

按核扩展模块的名称为在原扩展模块名称后加上核数信息,如机器学习服务(16核)扩展模块的名称为'MACHINE_LEARNING_SERVICE_16CORES'、机器学习服务(32核)扩展模块的名称为‘MACHINE_LEARNING_SERVICE_32CORES’。

10.<multiworkers>元素

用于配置多进程服务的相关信息。如进程数量、端口范围等,示例如下:

  <multiworkers>
    <enabled>true</enabled> 
    <workerCount>4</workerCount>
    <workerIP>127.0.0.1</workerIP> 
    <workerPortStart>8900</workerPortStart>
    <workerPortEnd>9000</workerPortEnd> 
    <workerBaseDir>../../workers</workerBaseDir>
    <xmx>1024m</xmx> 
    <communicationPort>8100</communicationPort>
    <requestDispatchMode>RANDOM</requestDispatchMode>  
    <timeout>20</timeout> 
  </multiworkers> 

具体参数描述如下:

  • <enabled>:是否启用多进程模式。
  • <workerCount>:进程数量。
  • <workerIP>:设置主进程与子进程间的通信IP。
  • <workerPortStart>:Worker进程端口范围的起始端口号。
  • <workerPortEnd>:Worker进程端口范围的终止端口号。
  • <workerBaseDir>:子进程的工作目录。
  • <xmx>:Java虚拟机内存设置。
  • <communicationPort>:设置主进程与子进程间的通信端口号。
  • <requestDispatchMode>:主节点向子节点转发请求模式。包括:RANDOM,表示随机模式;TO_LEAST_REQUEST_WORKER, 表示主节点会将请求转发到请求处理数最小的子节点上。
  • <timeout>:指定主节点向子节点转发请求的超时时间。
  • <workerRecycle>:自动回收工作进程。
  • <enabled>:是否开启自动回收,默认为 false。
  • <checkPeriodHours>:工作进程资源占用情况巡检时间间隔。单位为小时,默认为 24 小时。
  • <maxWaitDisposeSeconds>:工作进程在销毁过程中的最大等待时间。如果一个工作进程在回收销毁过程中,持续时间超过设置的值,该进程将被自动销毁。单位为秒,默认 120 秒。

注:多进程相关参数(除 workerCount 外)修改后,需要手动重启 iServer 生效。

11.<scheduledTasks>元素

用于设置定时相关任务,如服务器配置文件定时备份、资源定时回收等,示例如下:

  <scheduledTasks>
    <scheduledRestart>
      <enabled>true</enabled> 
      <restartTime>
        <hour>9</hour>
        <minute>35</minute>
      </restartTime>
      <dayOfWeek>1,2,3,4,5,6,7</dayOfWeek> 
      <restartDate>2023-11-1</restartDate> 
    </scheduledRestart>
    <scheduledBackup>
      <enabled>true</enabled> 
      <backupTime>
        <hour>10</hour>
        <minute>40</minute>
      </backupTime>
      <dayOfWeek>1,2,3</dayOfWeek> 
      <backupDate>2023-11-1</backupDate> 
    </scheduledBackup>
  </scheduledTasks> 

具体参数描述如下:

  • <scheduledRestart> 用于设置服务器资源定时回收,具体包括:
  • <enabled>:是否启用服务器资源定时回收。
  • <restartTime>:回收时间。其子参数 hour 用于设置指定回收时间的小时值,minute 用于设置分钟值。
  • <dayOfWeek>:以间隔时间的方式设置回收时间。当需要在每天或每周内的指定时间回收资源时使用此参数,并且不可与<restartDate>参数同时设置。输入数字来表示每周的星期数,以逗号间隔。例如需要每天进行定时回收,则设置该参数为1,2,3,4,5,6,7。
  • <restartDate>:以指定时间的方式设置回收时间。当需要在某一指定日期的指定时间回收资源时使用此参数,并且不可与<dayOfWeek>参数同时设置。例如:2023-11-1
  • <scheduledBackup> 用于设置服务器配置文件定时备份,具体包括:
  • <enabled>:是否启用服务器配置文件定时备份。
  • <backupTime>:备份时间。其子参数 hour 用于设置指定备份时间的小时值,minute 用于设置分钟值。
  • <dayOfWeek>:以间隔时间的方式设置备份时间,当需要在每天或每周内的指定时间备份配置文件时使用此参数。输入数字来表示每周的星期数,以逗号间隔。例如需要每天进行定时备份,则设置该参数为1,2,3,4,5,6,7。与<backupDate>参数同时设置时,<backupDate>参数值生效。
  • <backupDate>:以指定时间的方式设置备份时间,当需要在某一指定日期的指定时间备份配置文件时使用此参数。例如:2023-11-1。与<dayOfWeek>参数同时设置时,<backupDate>参数值生效。

12.<spark>元素

      Spark 集群的基本配置:

  • <sparkHome>:Spark 安装目录。
  • <masterAddress>:Spark 分布式集群的 Master 节点地址。

13.<processing>元素

用于分布式分析服务配置,示例如下:

<processing>
     <enabled>true</enabled>
      <referToken>Token</referToken>
     <referServicesAddress/>
     <xmx>1024m</xmx>
     <workerPort>6765</workerPort>
     <defaultOutputType>UDBX</defaultOutputType>
     <rddStorageCount>10</rddStorageCount>
     <buildPyramid>false</buildPyramid>
     <publishService>true</publishService>
</processing>

       具体参数描述如下:

  • <enabled>:是否开启分布式分析服务。true 表示开启该功能,false 表示关闭该功能
  • <referToken>:关联服务地址所具有发布服务权限的用户tocken信息
  • <xmx>:JVM最大堆大小,默认为1024m
  • <workerPort>:进程端口号
  • <defaultOutputType>:默认分析结果输出类型
  • <rddStorageCount>:rdd存储个数
  • <buildPyramid>:分布式内开启矢量金字塔,默认为false状态,即关闭

  • <publishService>:是否将分析结果发布为数据和地图服务,默认为true状态

      注意:

      建议增加配置sparkSessionNoRebuild开关。启用此开关后,系统将不会因检测到Spark服务重启而自动重建SparkSession,从而避免相关报错。配置方式:在<processing>节点下新增<sparkSessionNoRebuild>true</sparkSessionNoRebuild> ,然后重启iserver,重启后iserver.log会出现“sparkSessionNoRebuild is set to true ”即设置成功。

14.<serviceInstanceManager>元素

用于服务实例动态化管理配置,示例如下:

  <serviceInstanceManager>
    <enableLazyInitService>true</enableLazyInitService> 
    <idleDispose>
      <enable>true</enable> 
      <checkPeriod>30000</checkPeriod>
      <maxIdleTime>30000</maxIdleTime>
    </idleDispose>
    <capacityLimit>
      <enable>true</enable> 
      <maxInstanceCount>2000</maxInstanceCount>
    </capacityLimit>
  </serviceInstanceManager>

其中,

  • <enableLazyInitService>:是否开启服务实例动态化管理。true 表示开启该功能,设置后,在 iServer 启动时将不立即初始化并启动服务;false 表示关闭该功能,设置后,在 iServer 启动时将立即初始化并启动服务,并且以下参数将不生效。
  • <idleDispose>:空闲服务相关设置,包括服务状态巡检间隔时间和空闲服务主动销毁时间。
  • <enable>:是否开启空闲服务相关设置。true 表示开启,此时您可以修改 checkPeriod 和 maxIdleTime 参数为符合实际应用场景的期望值。false 表示关闭,此时 checkPeriod 和 maxIdleTime 参数将分别设置为默认值30000(ms)和300000(ms),且不可修改。
  • <checkPeriod>:服务状态巡检间隔时间,单位毫秒,默认值为30秒。注意,该值越小,表示巡检越频繁,空闲服务自动销毁的行为越精确,但同时也越占用计算机资源。
  • <maxIdleTime>:空闲服务主动销毁时间。如果一个服务的空闲时间超过该阈值,将被自动销毁。该参数单位毫秒,默认值5分钟。
  • <capacityLimit>:服务数量限制设置,包括最大在线服务实例数。
  • <enable>:是否开启服务数量限制设置。true 表示开启,此时您可以修改 maxInstanceCount 参数为符合实际应用场景的期望值。false 表示关闭,此时 maxInstanceCount 参数将设置为默认值2000(个),且不可修改。
  • <maxInstanceCount>:最大在线服务实例数,默认2000个。当同时在线的服务个数超过该值,请求新的服务时,相关服务将不予启动,同时 iServer 将予以报错。

15.<storages>元素

用于分布式切图库管理配置,示例如下:

  <storages>
    <storage> 
      <id>smtiles</id>  
      <tileSourceInfo class="com.supermap.services.tilesource.MongoDBTilesourceInfo">
        <datastoreType>TILES</datastoreType>  
        <type>MongoDB</type>
        <readPreference>primary,nearest,secondary</readPreference>
        <serverAdresses> 
          <string>172.16.120.199:27017</string> 
        </serverAdresses>  
        <database>smtiles</database>
      </tileSourceInfo> 
    </storage>
  </storages>

其中,

  • <storage>:分布式切图库存储信息。
  • <id>:存储 ID。
  • <tileSourceInfo>:切片源连接信息。
  • <datastoreType>:数据存储类型。
  • <type>:数据库类型。
  • <readPreference>:当数据库为 MongoDB 时,可以设置读取策略,包括:primary、primaryPreferred、secondary、secondaryPreferred、nearest。
  • <serverAdresss>:服务地址,包括 ip 和 port。
  • <database>:数据库名称。

16.<dependencyServiceDetection>元素

用于服务器启动依赖项的可用性检测与异常等待机制的开启与配置,示例如下:

  <dependencyServiceDetection>
      <enabled>true</enabled>  
      <periodSeconds>5</periodSeconds>
      <timeoutSeconds>30</timeoutSeconds>  
      <failureThreshold>10</failureThreshold>
  </dependencyServiceDetection>

其中,

  • <enabled>:是否开启服务器启动依赖项的可用性检测与异常等待,默认为 true。当开启后如下配置才可生效,此时系统将对使用的 web 许可中心、安全信息存储数据库、会话信息存储数据库、服务配置信息存储数据库、临时资源存储数据库及 iServer 主节点等服务进行可用性检测,当全部已配置的依赖服务均检测为可用时,服务器才可正常启动。
  • <periodSeconds>:每个依赖项检测的时间间隔(从上一次执行结束到下一次执行开始的时间),单位为秒,默认值为5,可设置大于等于0的数值
  • <timeoutSeconds>:每个依赖项的超时等待时间,单位为秒,默认值为30,可设置大于0的数值
  • <failureThreshold>:依赖项检测的最大重试次数,默认值为10,若于最大次数检测时仍无法连接,则视为依赖项检测失败。可设置为大于等于1的数值

注:支持检测的启动依赖项如下表所示

功能 依赖项
许可 Web 许可中心
安全信息存储 MySQL 数据库、Oracle 数据库、PostgreSQL 数据库、华为 GaussDB 数据库、人大金仓 KingbaseES 数据库、海量数据库 Vastbase
会话信息存储 Redis 数据库、PostgreSQL 数据库、华为 GaussDB 数据库、人大金仓 KingbaseES 数据库、海量数据库 Vastbase
服务配置信息存储 Oracle 数据库、PostgreSQL 数据库、华为 GaussDB 数据库、人大金仓 KingbaseES 数据库、海量数据库 Vastbase
临时资源存储 Redis 数据库、MongoDB 数据库、非本机的 HSQL 数据库、PostgreSQL 数据库、华为 GaussDB 数据库、人大金仓 KingbaseES 数据库、海量数据库 Vastbase
多机集群 iServer 主节点

 

数据存储配置文件

数据存储配置文件 iserver-datastores.xml,根节点为 <application> 元素,包括<datastores>子节点元素,其中的每一个 datastore 元素用于配置一个具体的数据存储,包含以下属性:

  • datastoreType:数据存储类型。
  • type:数据类型
  • name:数据名称
  • url:数据存储目录
  • commonsCSVMetaData:csv 文件元数据信息

示例如下:

  <?xml version="1.0" encoding="UTF-8"?>
   <application>
    <datastores>
     <datastore>
      <datastoreType>BIGDATAFILESHARE</datastoreType>
      <type>FOLDER</type>
      <name>samples</name>
      <url>../../samples/data/ProcessingData</url>
      <commonsCSVMetaData> 
       <xIndex>10</xIndex>  
       <yIndex>11</yIndex>  
       <separator>,</separator>
      </commonsCSVMetaData> 
     </datastore> 
    </datastores> 
   </application>

GIS 服务动态加密配置文件

GIS 服务动态加密配置文件 iserver-svcworkkeymappings.xml,位于 config(【SuperMap iServer 安装目录】\webapps\iserver\WEB-INF\config)文件夹下,可用于防止数据爬取,提高服务器的安全性。配置文件中存储了待加密的 GIS 服务、加密密钥以及服务的 URL 请求之间的映射关系,即一个服务类型只能用一个密钥,该密钥用于这个服务类型下的多个 URL 请求。配置方法详见:GIS 服务动态加密配置