常见问题解答

发送反馈



  1. 安装与部署

  2. 启动 SuperMap iPortal 服务时,环境检查不通过的几种可能原因及解决方法。
  3. 为什么启动 iPortal 服务时,报端口占用错误,导致 iPortal 服务启动失败?
  4. 为什么运行 iPortal 过程中报如下错误:“java.lang.OutOfMemoryError: unable to create new native thread”?
  5. SuperMap iPortal 服务崩溃的可能原因有哪些?
  6. SuperMap iPortal 在非正常关闭的情况下,服务为什么会自动重启?
  7. SuperMap iPortal 在 Tomcat 等 Java Web 容器中,以 Windows 服务形式启动时,日志文件放在哪里?
  8. 停止 iPortal 时,bin 下为什么会生成 *.mdmp 文件,导致磁盘占用过多?
  9. 如果 iPortal 所在的操作系统配置了多个 IP,如何指定 iPortal 服务所使用的 IP?
  10. iPortal 不支持注册 localhost 和 127.0.0.1 的服务地址到门户中,那么在无法连网的情况下(单机模式),如何满足用户注册服务进行产品演示的需求呢?
  11. 希望在一台机器上同时启动多个 iPortal 时,应该如何操作?
  12. 增加资源操作成功,但资源中心不显示该资源,且控制台有类似警告如:“index ResourceItem failed. blocked by: [FORBIDDEN/12/index read-only / allow delete <api> ]; index resource document MAP1314740420 failed. update resource document MAP1314740420 failed”;资源删除失败,控制台有类似警告如:“delete resource documents ["MAP1036388859"] failed”;启用服务代理和服务访问统计功能,但服务访问统计数值不增加,且控制台有类似警告如:“update resource heatlevel failed. Failed resource id and increment: {"SERVICE243650535":1} ”。发生这些问题时,应该怎么解决?
  13. 如果想要更改 SuperMap iPortal 内置全局搜索的配置(如端口号、集群名、节点名等),应该如何操作?

    跨平台与中间件

  14. 为什么在 Linux 系统上启动 iPortal 服务时,报如下类似错误:“Unable to set localhost. This prevents creation of a GUID”?
  15. Linux 系统没有图形界面,如何通过命令行方式配置 SuperMap iPortal 7C 使用许可?
  16. 在 Linux 64位操作系统上安装 SuperMap License Center 许可驱动程序时,有的会出现:“The 32bit support is missing. Please install the x86 compatibility packages required by your distribution and retry the installation. See the installation guide for more details.Aborting … “,如何解决?
  17. 如果在 Hyper-v 上运行的 Linux 操作系统中,安装7C 许可失败,或在重启系统后许可不可用,该如何解决?
  18. 在 Linux 操作系统上安装 SuperMap License Center 许可驱动程序时,有时会出现:“hasp_update failed with status 65”错误信息,如何解决?
  19. 为什么使用远程工具(如:putty、SecureCRT、SSH)启动 Linux 机器上的 SuperMap iPortal 7C 或 SuperMap iPortal 7C 服务后,访问服务首页报“Could not initialize class sun.awt.X11GraphicsEnvironment”或“系统环境检查不通过”错误,而在本机上启动服务,访问服务首页却正常?
  20. 为什么 在 Linux 操作系统上启动 iPortal 服务时,报如下类似错:java.lang.RuntimeException : can not run elasticsearch as root?
  21. 如果在 Linux 操作系统上启动 iPortal 服务时,卡在"Explicit INI instance has been provided, but configuration locations have also been specified...",无法启动成功如何解决?
  22. 如果 iPortal 部署在语言环境为英文的 Ubuntu 操作系统中,上传含有中文的数据或输入中文内容时出现乱码,该如何解决?

    服务访问

  23. 为什么有时候发送请求时服务器无法正确识别请求,即出现返回乱码、请求失败或者得到错误结果的情况?
  24. 为什么经 nginx 反向代理后的 iServer 服务注册到 iPortal 中,通过 iPortal 代理后,访问 iServer 代理地址页面会出现一些资源无法访问,例如:地图资源,访问该服务的 rjson 表述,一些资源的 url 地址中显示的端口号不是 iPortal 的代理端口,而是 nginx 的监听端口?
  25. 如果在发送请求时,扫描工具提醒有 host header attack 漏洞,即“检测到目标URL存在http host头攻击漏洞”,应该如何处理?
  26. 为什么在 iPortal 中使用了 nginx 代理反向代理之后,上传数据量较大的数据时进度条一直卡住不动?
  27. 为什么以 HTTPS 协议启动 iPortal 后,全局搜索中的画框搜索图标为禁用状态,如何解决?
  28. 在 iPortal 中指定了 iServer 服务器作为托管服务器发布服务,当 iServer 服务器升级或产品包替换后,iPortal 无法正常发布服务,应该如何解决?
  29. 在 iPortal 中指定了部署在云原生环境的 iServer 作为托管服务器,如果需要修改可用于发布服务的微服务节点数(默认限制节点数最大为2),应该如何操作?

    配置管理

  30. 如果忘记 SuperMap iPortal 初始化时创建的管理员账户密码怎么办?
  31. 为什么配置 CAS 认证服务器后,单点登录认证失败?
  32. 为什么正确配置了邮箱服务器后,还会提示“警告:SMTP服务器配置不合法”?
  33. 在 iPortal 用户数量很大的情况下,例如:2万用户,启动 iPortal 服务会比较慢,加载用户管理页面也会比较慢,如何解决?
  34. 如何理解和区分 iPortal 的普通用户角色(PORTAL_USER)和查看者角色(PORTAL_VIEWER)?
  35. 当用户使用 Keycloak 账户登录 iPortal 时登录失败,如何解决?
  36. 当用户将 iPortal 和 Keycloak 部署在不同的机器上时,在谷歌浏览器中使用 Keycloak 账户登录 iPortal 时登录失败,如何解决?
  37. 如果用户将 iPortal 语言环境切换为英文后,日志文件和提示信息仍然显示中文,应该如何解决?
  38. 如果用户想在谷歌浏览器中将 iPortal 的全局搜索地址设置为默认搜索引擎,应该如何操作?

    数据库

  39. 如果用户已经创建了 SuperMap iPortal 的系统管理员账号,如:admin,此时由 SQLite 数据库切换至 MySQL 数据库,然后进行注册服务、创建地图等添加门户数据操作会报错,控制台提示“Cannot add or update a child row: a foreign key constraint fails...”?
  40. 如果用户使用的数据库为 MySQL 8.0 及以上版本,在启动 iPortal 时失败并报如下类似错误:“Current charset is GBK. If password has been set using other charset, consider using option 'passwordCharacterEncodng'”,如何解决?
  41. 如果用户在设置密钥时选择的服务数目较多,添加密钥无响应,且报如下类似错误:“Error updating database.  Cause: java.sql.SQLDataException: Data too long for column 'serviceIds' at row 1”,如何解决?

    产品升级

  42. SuperMap iPortal 8C SP1 及之前的版本,使用了服务器监控功能,升级至 8C SP2 及之后的版本时,监控不到服务器信息了,该如何解决?

 

 

  1.  

  2. 启动 SuperMap iPortal 服务时,环境检查不通过的几种可能原因及解决方法。

    答:SuperMap iPortal 服务需要配置 JRE 1.8 或以上版本,需要配置 SuperMap iPortal 的使用许可。

    在 %SuperMap iPortal_HOME%\bin 目录下使用“iportal.bat -v”(Linux/Unix 平台使用 “./iportal.sh -v”)可以查看当前 SuperMap iPortal 的版本及配置信息。可能原因及解决方法如下:

    (1) SuperMap iPortal 许可配置不正确,请确保使用许可已正确配置。许可的配置请参见许可配置说明

    (2) JRE/JDK 版本过低或者不兼容。SuperMap iPortal 支持1.8以上版本的 JRE/JDK。

     

  3. 为什么启动 SuperMap iPortal 服务时,报端口占用错误,导致 iPortal 服务启动失败?

    答:SuperMap iPortal 产品包默认部署在 Tomcat 中,Tomcat 默认使用了 8190、8115端口,这两个端口被占用则无法正常启动服务。可以通过以下两种方式解决:

    (1) 请退出占用端口的程序,然后重新启动 SuperMap iPortal。

    (2) 修改 SuperMap iPortal 产品包中 Tomcat 的端口号,然后重新启动 SuperMap iPortal。具体方法是修改%SuperMap iPortal_HOME%/conf/server.xml 中的相关端口,如:<Server port="8016" ……>、<Connector port="8091" …… redirectPort="8454" ……>。

     

  4. 为什么运行 SuperMap iPortal 过程中报如下错误:“java.lang.OutOfMemoryError: unable to create new native thread”?

    答:SuperMap iPortal 中,线程池中创建线程时会在操作系统里创建一个真正的物理线程,在某些内存小的机器上,当注册的数据量大、访问量大时,因处理高并发的请求,操作系统创建物理线程所需的内存空间会跟 Java 虚拟机堆产生内存竞争,由此导致线程创建失败(iPortal 32位安装包默认分配的最大的 Java 虚拟机内存为512M,最大线程数为300)。可通过如下方式解决:

    (1) 减少分配给 java 虚拟机的内存;修改 Java 虚拟机参数,例如在 windows 版的 iPortal 包中,修改 %SuperMap iPortal_HOME%/bin/catalina.bat 中的 JAVA_OPTS,设置 -Xmx512m 为更小值;

    (2) 减少 tomcat 连接池的活动线程数;修改 %SuperMap iPortal_HOME%/conf/server.xml 中,<Executor/>节点的 maxThreads 为更小值。

     

  5. SuperMap iPortal 服务崩溃的可能原因有哪些?

    答:有如下可能原因:

    (1)请检查本机是否安装并开启了金山毒霸杀毒软件。开启金山毒霸可能会导致 iPortal 服务崩溃。

    (2)已知 Tomcat 7.0.29 版本会导致内存泄露,更换为其他 Tomcat 版本,如 Tomcat 7.0.26 即可。

     

  6. SuperMap iPortal 在非正常关闭的情况下,服务为什么会自动重启?

    答:这是为了在 iPortal 服务异常的情况下,通过服务自动重启来保证 iPortal 继续正确工作。自动重启功能在如下场景中有效:

    • iPortal Windows/Linux 安装包,以命令行方式启动时

    自动重启功能不适用如下场景:

    • iPortal 以 Windows 服务启动时

    注意:SuperMap iPortal 可通过执行 shutdown.bat/shutdown.sh(位于【SuperMap iPortal 安装目录】\bin 下)或按住键盘上的 Ctrl+C 键结束服务,来正常关闭,详细请参见服务器的启动/停止

    系统配置文件(iserver-system.xml)中<properties> 节点下的<restartWhenCrash>参数,可用于控制是否启用该功能。

     

  7. SuperMap iPortal 在 Tomcat 等 Java Web 容器中,以 Windows 服务形式启动时,日志文件放在哪里?

    答:当 SuperMap iPortal 以 Windows 服务形式启动时,以部署到 Tomcat 中为例,在【SuperMap iPortal 安装目录】\webapps\iportal\WEB-INF\iserver-log4j.properties 文件中,指定了日志文件的存放路径:log4j.appender.F.File=../logs/iserver.log,因此 logs 文件夹放在服务启动文件(cmd.exe)的上一级目录下,即日志文件的存放位置为:C:\Windows\logs\。

    另外,用户可以修改上述 log4j.properties 文件,把指定的存放 log 文件的相对路径改为绝对路径,例如:log4j.appender.F.File=D:/Tomcat /logs/iserver.log。

     

  8. 停止 SuperMap iPortal 时,bin 下为什么会生成 *.mdmp 文件,导致磁盘占用过多?

    答:停止 SuperMap iPortal 时,请使用 shutdown.bat/sh,而不是 Ctrl+C 命令。

     

  9. 如果 SuperMap iPortal 所在的操作系统配置了多个IP,如何指定 iPortal 服务所使用的IP?

    答:您可以通过修改 Catalina.bat 中的 Java 虚拟机参数中的-Diserver_ip来指定 iPortal 所使用的 IP。即:修改 %SuperMap iPortal_HOME%/bin/catalina.bat 中的 JAVA_OPTS,设置-Diserver_ip为期望的IP,如:

    set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1536m -XX:MaxPermSize=192m -Xss512k -Diserver_ip=192.168.12.13

     

  10. iPortal 不支持注册 localhost 和 127.0.0.1 的服务地址到门户中,那么在无法连网的情况下(单机模式),如何满足用户注册服务进行产品演示的需求呢?

    答:无网的情况下,在 Windows 平台中可以通过以下方式解决注册服务问题:

    在 C:\Windows\System32\drivers\etc 目录下的 hosts 文件中加入一个映射,例如:

    127.0.0.1    www.iportaldemo.com

    注册携带以上域名的服务地址就可以了。

     

  11. 希望在一台机器上同时启动多个 iPortal 时,应该如何操作?

    答:在同一台机器上启动多个 iPortal 时,需修改 iPortal 产品包中的 Tomcat 端口号以及 ElasticSearch 端口号和集群名称,以避免端口号和集群名称冲突导致服务启动失败,您可以按以下步骤进行操作:

    (1)iPortal 产品包部署在 Tomcat 中,默认使用了 8190、8115端口,您可以参考 FAQ 2,对不同 iPortal 产品包中的 Tomcat 端口号进行修改,保证不同 iPortal 的端口号互不冲突。

    (2)修改不同 iPortal 中 ElasticSearch 启动的默认端口号和集群名称,即 %SuperMap iPortal_HOME%/bin/startes.bat(sh) 文件中的下述粗体代码部分,保证不同 iPortal 产品包中的 ElasticSearch 端口号和集群名称互不冲突:

    java -jar c@echo off

    set "CUR_DIR_TEMP=%~dp0"

    set JAVA_HOME=%CUR_DIR_TEMP%\..\support\jre

    set PATH=%JAVA_HOME%\bin;%path%

    rem start elasticsearch

    if not ""%ESDATADIR%""=="""" goto okdatadir

    set ESDATADIR=%CUR_DIR_TEMP%\..\data\elasticsearch\data

    :okdatadir

    if not ""%ESLOGSDIR%""=="""" goto oklogdir

    set ESLOGSDIR=%CUR_DIR_TEMP%\..\data\elasticsearch\logs

    :oklogdir

    set ESNODENAME=node1

    set ESClUSTERNAME=myapplication

    set ESHTTPPORT=9210

    set ESTCPPORT=9310

    "%CUR_DIR_TEMP%\..\database\elasticsearch\bin\elasticsearch.bat" -Epath.data=%ESDATADIR% -Epath.logs=%ESLOGSDIR% -Ecluster.name=%ESClUSTERNAME% -Enode.name=%ESNODENAME% -Ehttp.port=%ESHTTPPORT% -Etransport.tcp.port=%ESTCPPORT% -Enetwork.host=127.0.0.1 -p espid

    (3)修改 iPortal 的全局搜索 spring 配置文件(%SuperMap iPortal_HOME%/webapps/iportal/WEB-INF/config/search/WEB-INF 目录下的 search-beans.xml),粗体代码部分的 port 和 clusterName 需与步骤 (2)中的 ESTCPPORT 和 ESClUSTERNAME 保持一致,如下所示:

    <bean id="esSetting" class="com.supermap.iportal.search.commontypes.ESSetting">

        <property name="address" value="127.0.0.1"></property>

        <property name="port" value="9210"></property>

        <property name="clusterName" value="myapplication"></property>

        <!-- <property name="nodeName" value="node1"></property> -->

        <property name="indexName" value="portalsearch"></property>

        <property name="numberOfShards" value="5"></property>

        <property name="numberOfReplicas" value="0"></property>

    </bean>

    (4)修改不同 iPortal 产品包中的 iportal.xml 配置文件,保证不同 iPortal 的全局搜索服务端口和代理服务端口互不相同,如下粗体代码部分:

    <IportalConfig>

      ...

      <modulesConfig>

        <searchModuleConfig class="com.supermap.server.config.BuildinSearchConfig">

          <enable>true</enable>

          <reindexAllResources>true</reindexAllResources>

          <startElasticSearch>true</startElasticSearch>

          <port>8192</port>

        </searchModuleConfig>

      </modulesConfig>

     ...

      <serviceProxy>  

        <enable>true</enable>  

        <enableBuiltinProxy>true</enableBuiltinProxy>  

        <port>8195</port>  

     ...

      </serviceProxy>  

     ...

    </IportalConfig>

    (5)保存以上配置后,即可实现在一台机器上同时启动多个 iPortal。

     

  12. 增加资源操作成功,但资源中心不显示该资源,且控制台有类似警告如:“index ResourceItem failed. blocked by: [FORBIDDEN/12/index read-only / allow delete <api> ]; index resource document MAP1314740420 failed. update resource document MAP1314740420 failed”;资源删除失败,控制台有类似警告如:“delete resource documents ["MAP1036388859"] failed”;启用服务代理和服务访问统计功能,但服务访问统计数值不增加,且控制台有类似警告如:“update resource heatlevel failed. Failed resource id and increment: {"SERVICE243650535":1} ”。发生这些问题时,应该怎么解决?

    答:iPortal 如下功能模块基于产品包内置的Elasticsearch 分布式搜索引擎实现:

    • 全局搜索(SuperMap iPortal 10i+)
    • 资源中心(SuperMap iPortal 10i+)
    • 服务访问统计(SuperMap iPortal 11i(2022)+)

    Elasticsearch 会对磁盘空间进行监控,当磁盘剩余空间达到了 floodstage 阈值,会将所有相关索引强制置为只读,导致该问题。这是 Elasticsearch 对磁盘的一种保护措施。您可选择如下解决方案:

    方法1:清理磁盘,或将 iPortal 产品安装包,或您自行部署的 Elasticsearch 包,迁移到可用空间充足的磁盘中,确保磁盘使用率低于 95%(推荐方案)。

    方法2:调整 Elasticsearch 的默认阈值。具体操作:

    (1)在 iPortal 内置 Elasticsearch(路径:%SuperMap iPortal_HOME%/database/elasticsearch)或您自行配置的 Elasticsearch,/config/elasticsearch.yml 文件中增加如下配置:

    cluster.routing.allocation.disk.watermark.low: 90%

    cluster.routing.allocation.disk.watermark.high: 95%

    cluster.routing.allocation.disk.watermark.flood_stage: 97%

    或:

    cluster.routing.allocation.disk.watermark.low: 100gb

    cluster.routing.allocation.disk.watermark.high: 50gb

    cluster.routing.allocation.disk.watermark.flood_stage: 10gb

    其中,cluster.routing.allocation.disk.watermark.low,默认85%,用于控制磁盘的最小使用率;cluster.routing.allocation.disk.watermark.high,默认90%,用于控制磁盘的最大使用率;cluster.routing.allocation.disk.watermark.flood_stage,默认95%,超过此值时,Elasticsearch 变成只读模式,无法写入数据。关于上述参数的详细介绍,参见 Elastic 官网文档:基于磁盘的分片设置

    注意:上述配置必须同时设为百分比,或具体字节值,不能混用

    (2) 在 %SuperMap iPortal_HOME%/webapps/iportal/WEB-INF/iportal.xml 中,找到 reindexAllResources 字段,设置为 true,如下所示。(增删资源导致的失败,必须进行此项操作)

     <reindexAllResources>true</reindexAllResources>

    (3)重启 iPortal。

     

  13. 如果想要更改 SuperMap iPortal 内置全局搜索的配置(如端口号、集群名、节点名等),应该如何操作?

    答:您可以通过以下两个步骤进行修改:

    (1)打开 %SuperMap iPortal_HOME%/webapps/iportal/WEB-INF/config/search/WEB-INF 目录下的 search-beans.xml 配置文件,可以根据您业务的需要更改相关参数。

    <bean id="esSetting" class="com.supermap.iportal.search.commontypes.ESSetting">

        <property name="address" value="127.0.0.1"></property>

        <property name="port" value="9210"></property>  

        <property name="clusterName" value="myapplication"></property>

        <!-- <property name="nodeName" value="node1"></property> -->

        <property name="indexName" value="portalsearch"></property>

        <property name="numberOfShards" value="5"></property>

        <property name="numberOfReplicas" value="0"></property>

    </bean>

    • address:Elasticsearch 的 IP 地址。默认为本机 IP:127.0.0.1,使用 iPortal 自带的 Elasticsearch。
    • port:Elasticsearch 的 HTTP 协议通讯端口号。默认值:9210。
    • clusterName:Elasticsearch 的集群名称。
    • nodeName:Elasticsearch 的节点名称。可选配置项,如需指定 Elasticsearch 节点,在配置时需要将该行的注释打开。
    • indexName:Elasticsearch 里存储 iPortal 所有资源索引的索引库名称。用户可自定义名称,若对应的索引库不存在,iPortal 将自动创建索引库。
    • numberOfShards:索引分片数。设置 Elasticsearch 对索引进行划分的分片数量。默认值:5,将索引划分为 5 片。
    • numberOfReplicas:索引拷贝数。默认值:0,没有拷贝索引副本。

    (2)在修改完 search-beans.xml 文件后,还需同步修改 %SuperMap iPortal_HOME%/bin/startes.bat(sh) 文件中对应配置项,保持两者一致,以 startes.bat 为例,具体如下:

    @echo off

    set "CUR_DIR_TEMP=%~dp0"

    set JAVA_HOME=%CUR_DIR_TEMP%\..\support\jre

    set PATH=%JAVA_HOME%\bin;%path%

    rem start elasticsearch

    if not ""%ESDATADIR%""=="""" goto okdatadir

    set ESDATADIR=%CUR_DIR_TEMP%\..\data\elasticsearch\data

    :okdatadir

    if not ""%ESLOGSDIR%""=="""" goto oklogdir

    set ESLOGSDIR=%CUR_DIR_TEMP%\..\data\elasticsearch\logs

    :oklogdir

    set ESNODENAME=node1

    set ESClUSTERNAME=myapplication

    set ESHTTPPORT=9210

    set ESTCPPORT=9310

    "%CUR_DIR_TEMP%\..\database\elasticsearch\bin\elasticsearch.bat" -Epath.data=%ESDATADIR% -Epath.logs=%ESLOGSDIR% -Ecluster.name=%ESClUSTERNAME% -Enode.name=%ESNODENAME% -Ehttp.port=%ESHTTPPORT% -Etransport.tcp.port=%ESTCPPORT% -Enetwork.host=127.0.0.1 -p espid

     

  14. 为什么在 Linux 系统上启动 iPortal 服务时,报如下类似错误:“Unable to set localhost. This prevents creation of a GUID”?

    答:出现这种现象时,请在 /etc/hosts 文件中,配置主机名对应的 IP 地址,即将主机名映射到具体的 IP 地址。如加上下面最后一行,表示将机器名 linux-3z6l 映射到 192.168.112.213。

                    
    # Syntax: # IP-Address Full-Qualified-Hostname Short-Hostname 127.0.0.1 localhost 192.168.112.213 linux-3z6l linux-3z6l

     

  15. Linux 系统没有图形界面,如何通过命令行方式配置 SuperMap iPortal 7C 使用许可?

    答:通过 com.supermap.license.jar 以命令行方式配置许可包括如下四个步骤:

    (1)设置 Java 环境变量,并设置环境变量 LD_LIBRARY_PATH 为 com.supermap.license.jar 所在目录:

    export=./support/jre/bin/

    export=./support/SuperMap_License/

    (2)获取本机信息,进入 SuperMapiPortal7C\support\SuperMap_License 目录下,执行如下命令并指定生成的本机信息文件所存放的路径,在指定的路径下生成 *.c2v 文件:

    java -jar com.supermap.license.jar -create /路径名/*.c2v

    (3)将本机信息提交给北京超图软件股份有限公司。

    将上面步骤生成的本机信息文件(*.c2v)提交给北京超图软件股份有限公司,北京超图软件股份有限公司将根据您的申请生成*.v2c 正式许可文件并返回给您,您通过该文件配置正式许可。

    (4)许可生效,将您获得的*.v2c 正式许可文件指定到文件位置,执行如下命令:

    java -jar com.supermap.license.jar -update /路径名/*.v2c

    此外,可执行 java -jar com.superamp.license.jar -help 查看配置使用许可的相关命令,详细请参见Linux 系统下的许可配置说明

     

  16. 在 Linux 64位操作系统上安装 SuperMap License Center 许可驱动程序时,有的会出现:“The 32bit support is missing. Please install the x86 compatibility packages required by your distribution and retry the installation. See the installation guide for more details.Aborting … “,如何解决?

    答:因为该 Linux 64 位操作系统缺少 32bit 支持库,所以运行出错。解决方法是需要手动安装支持32位的支持库(参考如下列表),您可以加载系统盘补充安装相关库,或到相应系统的官网上获取相关库来安装。

    • libc6-i386 和 ia32-libs(Ubuntu)
    • libstdc++-devel.i686、glibc.i686、libgcc.i686、libstdc++.i686、glibc-devel.i686(RHEL、 CentOS、OpenSUSE、SLES 和 OES)
    • glibc-32bit(OpenSUSE、SLES 和 OES)

    对于 SUSE 系列10.3以上、Red Hat 系列5.5以上的操作系统,iPortal 提供了一个脚本文件协助您安装上述依赖库。您只需要在启动 iPortal 前,在【SuperMap iPortal 产品目录】/SuperMapiPortal7C/support/SuperMap_License/Support 下以如下方式运行:

    ./rpms_check_and_install_for_64bit.sh install -y

     

  17. 如果在 Hyper-v 上运行的 Linux 操作系统中,安装7C 许可失败,或在重启系统后许可不可用,该如何解决?

    答:如果遇到许可安装失败,或安装过的许可不可用,可以通过以下方法把驱动卸载后重新安装。

    (1)把/var/hasplm 目录删除,命令如下:

    cd /var

    rm -rf hasplm

    (2)卸载许可驱动:

    cd /SuperMapiPortal7C/support/SuperMap_License/Support/aksusbd-2.2.1-i386

    ./dunst

    (3)重新安装许可驱动:

    ./dinst

     

  18. 在 Linux 操作系统上安装 SuperMap License Center 许可驱动程序时,有时会出现:“hasp_update failed with status 65”错误信息,如何解决?

    答:该错误提示可以忽略,当您重复安装许可驱动时,会出现该错误提示信息,表示当前计算机已导入过90天的试用许可,试用期内不影响许可的正常使用。如果已经过了90天试用期,请联系销售人员申请继续试用或正式购买(可通过在线商店购买短期许可)。

     

  19. 为什么使用远程工具(如:putty、SecureCRT、SSH)启动 Linux 机器上的 SuperMap iPortal 7C 服务后,访问服务首页报“Could not initialize class sun.awt.X11GraphicsEnvironment”或“系统环境检查不通过”错误,而在本机上启动服务,访问服务首页却正常?

    答:如果使用远程工具启动 SuperMap iPortal 7C 服务,需要首先登陆 Linux 机器,然后打开一个终端运行以下命令:

    (1)X:n&     在第 n 个屏幕上启动一个 XServer , n 为任意整数(如:22、30 等)。

    (2)export DISPLAY=:n.0     设置 DISPLAY 变量到本机的 XServer 服务器上,然后再重启服务即可。

     

  20. 为什么 在 Linux 操作系统上启动 iPortal 服务时,报如下类似错:java.lang.RuntimeException : can not run elasticsearch as root?

    答:iPortal 中内置了 Elasticsearch 以提供全局搜索功能。在 Linux 操作系统中, Elasticsearch 不能以 root 账户启动。如果您希望使用自行部署的 Elasticsearch 搜索服务器,只需修改全局搜索配置文件即可正常启动 iPortal;如果您使用 iPortal 内置的 Elasticsearch,则需要在 Linux 终端中,按照如下步骤启动 iPortal:

    (1)useradd elastic     添加一个新的 elastic 用户。

    (2)chown elastic %Supermap iPortal_HOME% -R    为新建的用户赋予添加权限,其中  %Supermap iPortal_HOME% 为 iPortal 的目录。

    (3)su root    切换回 root 用户。

    (4)vim /etc/security/limits.conf    修改 limits.conf 配置文件,在文件最后添加如下配置:

    elasitc    hard    nofile     65536

    elastic    soft     nofile     65536

    *            soft     nproc     4096

    *            soft     nproc     4096

    (5)vim /etc/sysctl.conf    修改 sysctl.conf 配置文件,在文件最后添加如下配置,增加 elastic 用户拥有的内存权限:

    vm.max_map_count=655360

    (6)sysctl -p    加载修改后的配置文件。

    (7)su elastic   切换回 elastic 用户,运行 startup.sh,即可正常启动 iPortal。

     

  21. 如果在 Linux 操作系统上启动 iPortal服务时,卡在"Explicit INI instance has been provided, but configurationlocations have also been specified...",无法启动成功,如何解决?

    答:您可以按照以下步骤修改/etc/security/limits.conf 文件:

    (1)以 root 用户执行以下命令:

    vi  /etc/security/limits.conf

    user soft nofile 65536

    user hard nofile 65536

    user:应写入实际的 Linux 中使用的用户名,您也可以将其替换为"*",表示该配置修改对所有用户生效。

    注:上述进程最大文件打开数量"nofile"的配置值 65536 并非固定配置值,您可以根据实际情况进行修改,完成修改后,必须切换到非 root 用户登录,才能启动iPortal服务。

    (2)切换到非 root 用户,执行以下命令,查看配置是否生效:

    ulimit -Hu

    ulimit -Su

    (3)完成修改后,进入 iPortal 安装目录,执行以下命令结束当前进程后,重新启动iPortal服务

    ps -ef | grep $PWD

    kill -9  iportal 进程号

    iportal 进程号:通过 "ps" 命令查看与 iPortal 相关的进程及对应的进程号, 此处实际写入相关进程号。

     

  22. 如果 iPortal 部署在语言环境为英文的 Linux 操作系统中,上传含有中文的数据或输入中文内容时出现乱码,该如何解决?

    答:您需要在 Linux 系统中安装中文语言包,以支持中文字符集。以 Ubuntu 20.04 为例,您只需切换到 root 用户,执行以下命令即可:

    apt install language-pack-zh-hans

     

  23. 为什么有时候发送请求时服务器无法正确识别请求,即出现返回乱码、请求失败或者得到错误结果的情况?

    答:发送的 HTTP 请求没有使用 UTF-8 编码导致服务器无法识别所致。对于非 ASCII 字符,SuperMap iPortal 默认使用 UTF-8 编码,如果不是,则无法正确解析。

     

  24. 为什么经 nginx 反向代理后的 iServer 服务注册到 iPortal 中,通过 iPortal 代理后,访问 iServer 代理地址页面会出现一些资源无法访问,如:地图资源,访问该服务的 rjson 表述,一些资源的 url 地址中显示的端口号不是 iPortal 的代理端口,而是 nginx 的监听端口?

    答:需要修改代理 iServer 服务的 nginx 配置,打开【nginx 安装路径】\conf\nginx.conf 文件,修改 http 节点-> server 节点-> location 节点中的 proxy_set_header 内容如下:

    server {

    ......

            location /iserver{

            #proxy_set_header Host $http_host;

            proxy_set_header ProxyHost $http_host; }

    }

    将 proxy_set_header 中的 $host:port 改为 $http_host ,然后重启 nginx 即可。

     

  25. 如果在发送请求时,扫描工具提醒有host header attack漏洞,即“检测到目标URL存在http host头攻击漏洞”,应该如何处理?

    答:在 SuperMap iPortal 的【SuperMap iPortal_HOME】\webapps\iportal\WEB-INF目录下,修改web.xml配置文件解决,首先定位hostHeaderAttackFilter参数,然后修改 init-param 节点-> param-value 节点中的内容如下:

    <filter>

        <filter-name>hostHeaderAttackFilter</filter-name>

        <filter-class>com.supermap.iportal.web.filters.HostHeaderAttackFilter</filter-class>

          <init-param>

              <param-name>allowedHosts</param-name>

              <param-value>127.0.0.1:8190,192.168.17.198:8190</param-value>  <!-- 设置http请求时允许的Host -->

          </init-param>

      </filter>

     

      <filter-mapping><!-- 放在其他Filter前面 -->

          <filter-name>hostHeaderAttackFilter</filter-name>

          <url-pattern>/*</url-pattern>

      </filter-mapping>

    在<param-value>节点中设置allowedHosts参数的值,即设置http请求时允许的host,例如,127.0.0.1:8190,192.168.17.198:8190。设置完成后,再重启iPortal服务即可。

     

  26. 为什么在iPortal中使用了nginx代理反向代理之后,上传数据量较大的数据时进度条一直卡住不动?

    答:需要修改nginx配置,打开【nginx安装路径】\conf\nignx.conf文件,修改 http 节点下client_max_body_size和 keepalive_timeout的内容,设置更大的值(默认值分别为2048m,65):

    ......

     http {

           client_max_body_size 2048m;

           keepalive_timeout  65;

    }

    client_max_body_size:表示客户端请求服务器最大允许大小,单位是兆。如果请求的数据量大于client_max_body_size中设置的值,HTTP协议会报错413"Request Entity Too Large",因此当您上传的数据量较大时,需要将参数值改大。

    keepalive_timeout:表示设置客户端连接保持活动的超时时间,单位是秒。在超过这个时间之后,服务器会关闭连接,因此如果您上传数据量较大,连接时间较长,也需要修改该参数的值。完成修改后,重启nginx即可。

     

  27. 为什么以HTTPS协议启动iPortal后,全局搜索中的画框搜索图标为禁用状态,如何解决?

    答:需要修改 BaseMapConfig.json 文件,打开【SuperMap iPortal_HOME】\webapps\iportal\resources\web-ui\config 目录下的 BaseMapConfig.json 文件,将“baseLayerUrl” 的地图服务地址替换为 iServer 中对应的 HTTPS 地图服务地址。配置完成后,无需重启 iPortal,刷新页面即可生效。

     

  28. 在 iPortal 中指定了 iServer 服务器作为托管服务器发布服务,当 iServer 服务器升级或产品包替换后,iPortal 无法正常发布服务,应该如何解决?

    答:需要在 iPortal 编辑服务器页面,根据 iServer 服务器现状编辑托管服务器节点信息并保存,若 iServer 服务器节点信息无变更,也需要在服务器编辑页面,重新保存服务器信息,确保可以正常发布服务。

     

  29. 在 iPortal 中指定了部署在云原生环境下的 iServer 作为托管服务器,如果需要修改可用于发布服务的微服务节点数(默认限制节点数最大为2),应该如何操作?

    答:您可以通过以下两种方式修改微服务节点数:

    • 修改 iportal-monitor.xml 配置文件

    在【SuperMap iPortal_HOME】\webapps\iportal\WEB-INF目录下,打开 iportal-monitor.xml 文件,在<monitor>节点下添加如下粗体部分代码:

    <monitor>

         ...

        <cloudNodeSelectStrategies>

          <cloudNodeSelectStrategy>

              <max>5</max>  

          </cloudNodeSelectStrategy>

      </cloudNodeSelectStrategies>

    </monitor>

    其中,<max>节点用于设置允许创建的最大微服务节点数,您可以按需设置。需要注意的是,节点数超过三位数时,可能会影响服务器性能,请谨慎设置。

    • 配置环境变量

    您也可以通过配置环境变量的方式修改微服务节点数,在您的机器中,增加如下环境变量即可:

    MAX_SERVICE_NODE_COUNT=5

     该环境变量用于设置允许创建的最大微服务节点数,您可以按需设置。需要注意的是,节点数超过三位数时,可能会影响服务器性能,请谨慎设置。

     

  30. 如果忘记 SuperMap iPortal 初始化时创建的管理员账户密码怎么办?

    答:在 SuperMap iPortal 的【SuperMap iPortal_HOME】\bin 目录下有个 passwordreset.bat/passwordreset.sh 文件,专门用来处理用户忘记系统初始化时的管理员账户密码问题。如果忘记系统初始化时的管理员账户密码,可以通过以下操作重新创建管理员账户:

    (1) 停止 SuperMap iPortal 服务,即执行 【SuperMap iPortal_HOME】\bin 目录下的  shutdown.bat /shutdown.sh 文件。

    (2) 执行 passwordreset.bat/passwordreset.sh 文件 。

    (3) 重启 SuperMap iPortal 服务,即执行 【SuperMap iPortal_HOME】\bin 目录下的 startup.bat/startup.sh 文件。服务启动后访问 iPortal 首页时,系统会自动跳转到创建管理员账户界面,此时只需重新创建管理员账户即可。

    需要注意的是:如果您是通过账户初始化配置创建的管理员账户密码,直接查看【SuperMap iPortal_HOME】\bin 目录下的 setenv.bat/setenv.sh文件,其中的“ADMINUSER”和“PASSWORD”的变量值即为初始化时创建的管理员账户密码。

     

  31. 为什么配置 CAS 认证服务器后,单点登录认证失败?

    答:如果 CAS 认证服务器和 GIS 服务器不在同一台机器上,由于两台机器的时间差,可能导致登录验证不成功,这时需要调整两台机器的时间保持一致,或延长容错时间间隔,iPortal 默认的时间差容限为 3 分钟。修改容错时间差容限的方法是编辑 shiro.ini(WEB-INF 下),修改 casRealm.tolerance 参数(单位为毫秒)如下:

    ...

    casRealm.enabled = false

    casRealm.reserveSystemAccount = true

    casRealm.casServerUrlPrefix = http://{ip}:{port}/cas

    casRealm.casService = http://{ip}:{port}/{contextPath}/shiro-cas

    casRealm.securityInfoDAO = $sqliteRealm

    casRealm.tolerance = 180000

    ...

     

  32. 为什么正确配置了邮箱服务器后,还会提示“警告:SMTP服务器配置不合法”?

    答:如果您使用的 JDK 版本为1.8及以上(iPortal 产品包中自带的 JDK 版本为1.8),当安全协议采用 SSL 或 STARTTLS 时,邮件服务器配置可能会验证不通过,提示“警告:SMTP服务器配置不合法”,需通过以下步骤解决:

    (1)到 http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html 下载 UnlimitedJCEPolicyJDK7.zip

    (2)解压 UnlimitedJCEPolicyJDK7.zip 得到以下两个文件

    • local_policy.jar
    • US_export_policy.jar

    (3)用这两个 jar 文件覆盖 【SuperMap iPortal_HOME】\support\jre\lib\security 目录下的同名文件(建议将原文件做备份)

    (4)重启 iPortal 服务

     

  33. 在 iPortal 用户数量很大的情况下,例如:2万用户,启动 iPortal 服务会比较慢,加载用户管理页面也会比较慢,如何解决?

    答:iPortal 在启动服务时,默认将所有用户信息缓存到内存,并从内存查询用户信息。如果用户数量比较大,建议用户信息不缓存到内存,实时从数据库查询,因为缓存所有用户信息需要大量的 SQL 查询,性能慢,只在具体查询时查询相关的数据即可。需通过修改【SuperMap iPortal_HOME】\webapps\iportal\WEB-INF\iserver-system.xml 配置文件解决,具体修改<management>节点-><security>节点-><SecuritySetting>节点的内容如下:

    <management>

    ...

    <security>

            <SecuritySetting>

              <cacheInfoToMemory>false</cacheInfoToMemory>

    ...

    增加<cacheInfoToMemory>节点,用于设置是否将所有用户信息缓存到内存。默认值为 true,表示缓存所有用户信息到内存。针对用户数据量很大时,建议设置为 false,用户信息不缓存到内存。

     

  34. 如何理解和区分 iPortal 的普通用户角色(PORTAL_USER)和查看者角色(PORTAL_VIEWER)?

    答:iPortal 的普通用户角色(PORTAL_USER)和查看者角色(PORTAL_VIEWER)区别如下:

    (1)iPortal 的普通用户角色 PORTAL_USER,关联该角色的用户即为 iPortal 的普通用户,拥有使用 iPortal 门户的权限,包括使用、创建和共享门户资源;

    (2)iPortal 的查看者角色 PORTAL_VIEWER,关联该角色的用户具有登录 iPortal 门户,查看与其共享的资源的权限,无法自行创建资源和管理资源。

    更多关于 iPortal 的普通用户角色(PORTAL_USER)和查看者角色(PORTAL_VIEWER)的区别和联系请参见:角色和权限

     

  35. 当用户使用 Keycloak 账户登录 iPortal 时登录失败,如何解决?

    答:登录失败的原因可能有以下两个方面,iPortal 门户管理员可以按照以下步骤进行检查:

    (1)Keycloak 配置存在问题。您可以参见:Keycloak安装与配置,登录 Keycloak 来检查您的配置是否正确。

    (2)iPortal 中 Keycloak 登录配置存在问题。在此种情况下,无法通过 iPortal 主页的登录入口进行登录,您可以通过 iPortal 原始的登录界面(http://<ip>:<port>/iportal/web/login)登录,检查 Keycloak 登录配置,请参见:配置使用_Keycloak

     

  36. 当用户将 iPortal 和 Keycloak 部署在不同的机器上时,在谷歌浏览器中使用 Keycloak 账户登录 iPortal 时登录失败,如何解决?

    答:登录失败的原因可能是由于谷歌浏览器不允许跨域传送 cookie。此时您可以采用反向代理机制,部署一台 Nginx 代理服务器,将不同机器上的 iPortal 请求和 Keycloak 请求转发到相同的域名/IP,确保 iPortal 和 Keycloak 在谷歌浏览器中的正常通信。关于 Nginx 的部署,可以参考:服务代理独立部署的配置

     

  37. 如果用户将 iPortal 语言环境切换为英文后,日志文件和提示信息仍然显示中文,应该如何解决?

    答:您可以通过设置【SuperMap iPortal_HOME】\bin\catalina.bat(.sh) 中 Java 虚拟机参数的 -Duser.language 来指定 iPortal 日志文件和提示信息的显示语言,修改完成并保存后,重新启动 iPortal 即可生效。

    • Windows 系统

    在【SuperMap iPortal_HOME】\bin \catalina.bat 文件中,修改 JAVA_OPTS,增加粗体部分配置信息,设置  -Duser.language 为期望的显示语言:

    set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1536m -Xss512k -Duser.language=en -Duser.country=US

    • Linux 系统

    在 Linux 系统中,以非 root 用户进入产品包解压后的 bin 路径下,执行以下命令,修改 catalina.sh 文件:

    (1)使用 vi 命令进入文件编辑状态。

    vi  ./catalina.sh

    (2)定位到需要修改的 JAVA_OPTS 位置,增加粗体部分配置信息,设置  -Duser.language 为期望的显示语言。

     JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -Xms256m -Xmx1536m -Xss512k -Duser.language=en -Duser.country=US"

     

  38. 如果用户想在谷歌浏览器中将 iPortal 的全局搜索地址设置为默认搜索引擎,应该如何操作?

    答:您需要先将 iPortal 全局搜索地址添加为搜索引擎,再将其设置为默认搜索引擎。具体来说,您可以按照以下步骤进行操作:

    (1)在谷歌浏览器中,依次点击“设置”>“搜索引擎”>“管理搜索引擎”进入搜索引擎管理页面,点击“添加”按钮,填写如下配置信息,将 iPortal 全局搜索添加为搜索引擎:

    • 搜索引擎:填写搜索引擎的名称,您可以自定义名称,如:iPortal 全局搜索
    • 关键字:填写搜索引擎的关键字,您可以自定义关键字,如:127.0.0.1:8190
    • 网址格式:填写搜索引擎的查询地址,参考格式:http://127.0.0.1:8190/iportal/web-ui/global-search?keyword=%s ,其中加粗部分的 ip 地址需替换为您实际使用的 ip 地址或域名

    (2)添加完成后,点击搜索引擎名称右侧的 ,在下拉菜单中选择“设为默认选项”,即可将全局搜索的搜索引擎设置为默认搜索引擎

    设置完成后,您在浏览器搜索栏中输入关键字,即可使用全局搜索检索 iPortal 中的资源。

     

  39. 如果用户已经创建了 SuperMap iPortal 的系统管理员账号,如:admin,此时由 SQLite 数据库切换至 MySQL 数据库,然后进行注册服务、创建地图等添加门户数据操作会报错,控制台提示“Cannot add or update a child row: a foreign key constraint fails...”?

    答:因为丢失了原来 SQLite 数据库中 user_infos 表里的用户信息,需要将【SuperMap iPortal_HOME】\webapps\iportal\WEB-INF\iportaldata 下的 iportal.db 中的用户信息同步到 MySQL 数据库中。具体操作为:在 MySQL 数据库中的 user_infos 表中添加 admin 这条记录,SQL 语句为:

    insert into user_infos(name,nickname) values("admin","admin");

    (针对 SuperMap iPortal 8C SP1之前的版本,您还需确保 MySQL 数据库中的 servicerooturls 表是空的,如果有记录,需要删除 ),然后重启 iPortal 服务即可。

    需要注意的是:如果您已经使用了 iPortal 创建地图、注册服务等,切换至 MySQL 数据库时如果想保留之前的门户数据信息,那么还需要同步 iportal.db 中的所有门户数据信息。

     

  40. 如果用户使用 MySQL 8.0 及以上版本的数据库时,启动 iPortal 失败并报如下类似错误:“Current charset is GBK. If password has been set using other charset, consider using option 'passwordCharacterEncodng'”,如何解决?

    答:这是由于 MySQL 8.0 及以上版本的默认密码加密规则从 mysql_native_password 变更为 caching_sha2_password 而导致 iPortal 启动失败。您可以在连接到 MySQL 后,执行以下命令以更改密码加密规则:

    use mysql;

    alter user 'username'@'%' identified with mysql_native_password by 'password';

    其中 username 为用户名,%为 user 表中设置的 host ,password 为用户密码,需根据 MySQL 数据库实际配置填写。配置完成后重启 iPortal 即可。

  41. 如果用户在设置密钥时选择的服务数目较多,添加密钥无响应,且报如下类似错误:“Error updating database.  Cause: java.sql.SQLDataException: Data too long for column 'serviceIds' at row 1”,如何解决?

    答:这是由于密钥对应的服务数目过多时,服务 ID 的长度超出了数据库中对应字段的字符长度限制。根据您配置的门户数据库不同(MySQL/Oracle/PostgreSQL),可尝试通过以下方法解决:

    (1)MySQL 数据库:在连接到 iPortal 门户数据库后,执行以下 SQL 语句,将 serviceIds 的字段类型修改为 text:

    alter table keycodes modify serviceIds text not null;

    (2)Oracle 数据库:在连接到 iPortal 门户数据库后,执行以下 SQL 语句,将 serviceIds 的字段类型修改为 clob:

    alter table "keycodes" rename column "serviceIds" to "serviceIds_temp";

    alter table "keycodes" add "serviceIds" clob;

    update "keycodes" set "serviceIds"=trim("serviceIds_temp");

    alter table "keycodes" drop column "serviceIds_temp";

    (3)PostgreSQL数据库:在连接到 iPortal 门户数据库 后,执行以下 SQL 语句,将 serviceIds 的字段类型修改为 text:

    ALTER TABLE keycodes ALTER COLUMN serviceIds TYPE text;

  42. SuperMap iPortal 8C SP1 及之前的版本,使用了服务器监控功能,升级至 8C SP2 及之后的版本时,监控不到服务器信息了,该如何解决?

    答:可尝试在“监控服务器”->“监控配置”页面重新输入密码后,再保存。