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 元素用于配置一个具体的服务组件。包含:
- config 元素,服务组件的配置信息。它包含 class、enabled、instanceCount、interfaceNames 等属性,具体请参见通过 XML 文件配置服务组件。
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>:三维数据密码。
- <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 中只能通过修改配置文件中此设置进行修改。
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>
</encryption>
</security>
其中,
- <captchaConfig>:用于设置登录时的验证码,默认关闭,具体参数包括:
- <enble>:是否开启登录验证码
- <type>:验证码类型,目前只支持图片验证码(即 IMAGE_CAPTCHA)
- <expireInSeconds>:验证码过期时间,单位为秒
- <length>:生成图片验证码的长度
- <isSecurityEnabled>:用于设置安全控制是否启用;
- <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 服务加密设置,即 <serviceKeySettings> 节点
- <serviceKeySettings>:GIS 服务加密设置节点,此节点中可配置多种 GIS 服务的加密方法,每一组在一个<serviceKeySetting>节点中,以配置项<keyID>作为标识。
- <serviceKeySetting>:该节点中具体包括每个 GIS 服务加密方法的标识(<keyID>)、密钥版本(<version>)、加密算法名(<algorithm>)、密钥长度(<keyLength>)和描述信息(<attributes>)等参数。
- <storage>:用于设置安全信息的存储位置,包含用于指定存储类型的<type>字段,目前支持SQLITE、MYSQL,以及配置数据库连接信息的<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 会话两种可选配置方式,您可以选择其中一种进行配置。
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. <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.<processing>元素
用于分布式分析服务配置,示例如下:
<processing>
<sparkHome>/home/supermap/spark-1.6.1-bin-hadoop2.6</sparkHome>
<masterAddress>spark://sparkmaster:7077</masterAddress>
</processing>
<processing>中包含了 Spark 集群的基本配置:
- sparkHome:Spark 安装目录。
- masterAddress:Spark 分布式集群的 Master 节点地址。
13.<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 将予以报错。
14.<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>:数据库名称。
数据存储配置文件
数据存储配置文件 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 请求。
以对获取矢量瓦片加密为例,示例如下:
<svcworkkeymappings>
<serviceType>
<typeName>com.supermap.services.components.impl.MapImpl</typeName>
<keyID>keyID1</keyID>
<urls>
/iserver/services/.*?/rest/maps/.*?/tileFeature\\.mvt.*,
/iserver/services/.*?/restjsr/v1/vectortile/maps/.*?/tiles/.*?/.*?/.*?\\.mvt
</urls>
</serviceType>
<serviceType>
<typeName>com.supermap.services.components.impl.DataImpl</typeName>
<keyID>keyID2</keyID>
<urls>/iserver/services/.*?/rest/data/datasources/.*?/datasets/.*?/tileFeature\\.mvt.*</urls>
</serviceType>
</svcworkkeymappings>
其中:
- <typeName>:服务组件类型,可在 iserver-services.xml 中查看。
- <keyID>:密钥 ID。
- <urls>:服务的 URL 请求。