SuperMap iServer 的 iserver.war 包部署成功后,访问的 URI 为:http://<server>:<port>/iserver/services。若 iserver.war 被重命名,比如被重命名为 renameiserver.war,则需要修改 URI 为 http://<server>:<port>/renameiserver/services。

在 Apache Tomcat 上部署

在 Apache Tomcat (以下简称 Tomcat)上部署 SuperMap iServer 前,请检查软件环境是否满足需求,请参考 war 包部署前的环境配置

注意,当使用 8.5.50 及以上版本的 Tomcat 时,需要修改【Tomcat 安装路径】/conf/catalina.properties 文件,需要修改的内容如下:

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar

tomcat.util.scan.StandardJarScanFilter.jarsToScan=\

log4j-taglib*.jar,\

log4j-web*.jar,\

log4javascript*.jar,\

slf4j-taglib*.jar,\

*adminui*.jar,\

*webui*.jar,\

*vue*.jar,\

*axios*.jar,\

*webjar*.jar,\

*swagger-ui*.jar

启动 Tomcat,把 war 包放入如下目录:【Tomcat 根目录】\webapps,Tomcat 就可以将 war 包发布为 Web 服务。例如启动 Tomcat,把 iserver.war 放入 webapps 目录,就完成了 SuperMap iServer 核心功能的启动。访问 http://<server>:<port>/iserver/services,就能获取 SuperMap iServer 所有可用服务的列表。使用 iserver#help.war 将帮助文档发布为在线形式后,访问的 URI 为:http://<server>:<port>/iserver/help。使用 iserver#iClient.war 将 iClient 发布为在线服务后,访问的 URI 为:http://<server>:<port>/iserver/iClient。

注意:

配置URL参数允许存在未编码的特殊字符,以保证SuperMap iServer文件选择器可以正常使用。需要在【Tomcat 安装路径】/conf/server.xml文件中HTTP/1.1 Connector的配置模块新增relaxedPathChars与relaxedQueryChars属性,参数值配置为[]|{},参见以下示例:

<Connector port="8080" protocol="HTTP/1.1"

            relaxedQueryChars="[]|{}"

            relaxedPathChars="[]|{}"

            connectionTimeout="20000"

            redirectPort="8443" 

            maxParameterCount="1000"

            />

在 Apusic Application Server 上部署

建议JDK版本:1.8。

在 Apusic Application Server 上部署 SuperMap iServer 前,请检查软件环境是否满足需求,请参考 war 包部署前的环境配置

Windows 系统下,在 Apusic Application Server (以下简称 Apusic)上部署 SuperMap iServer 的过程如下:

启动 Apusic,把 war 包放入如下目录:【Apusic 根目录】\aas\domains\【domainname】\applications,Apusic 就可以将 war 包发布为 Web 服务。其中【domainname】是正在运行的 Apusic 领域名。对于 iserver#help.war 和 iserver#iClient.war,需要将它们重命名使得名称中不包含特殊符号“#”后再部署,如将 iserver#help 改为 help.war。

为了避免SuperMap iServer与Apusic Application Server之间的类冲突问题,需要在SuperMap iServer应用目录【Apusic 根目录】\aas\domains\【domainname】\applications\iserver)WEB-INF文件夹中增加apusic-web.xml文件,文件内容如下配置:

<?xml version="1.0" encoding="UTF-8"?>

<aas-web-app error-url="">

<class-loader delegate="false">

<property name="ignoreParentsFiles" value="true"></property>

<property name="ignoreClassPrefix" value="org.glassfish.jersey"></property>

<property name="ignoreResources" value="META-INF/services/org.glassfish.jersey.server.spi.ComponentProvider;META-INF/services/org.glassfish.jersey.servlet.internal.spi.ServletContainerProvider"></property>

</class-loader>

</aas-web-app>

启动 Apusic 后,可以通过访问 Apusic 的管理界面,即 http://<server>:<port>/admin 来查看 war 包的部署情况。也可以通过该管理界面进行 war 包的部署。

注意:

1)若 Apusic 限制了 http 方法,需要修改中间件设置,即访问Apusic Web 管理控制台,在系统参数 -Apusic参数中删除 apusic.http.disabledMethod 项。修改操作完成后,需要重启Apusic应用。

2)配置URL参数允许存在未编码的特殊字符,以保证SuperMap iServer文件选择器可以正常使用。需要修改Apusic应用设置,即访问Apusic Web 管理控制,在 配置管理>server-config(对应服务的实例)>HTTP服务>HTTP监听程序>http-listener-1>编辑网络监听程序>HTTP>特殊字符白名单,将特殊字符白名单设置为: []|{}。修改后不需要重启Apusic应用。

在 GlassFish 上部署

在 GlassFish 上部署 SuperMap iServer 前,请检查软件环境是否满足需求,请参考 war 包部署前的环境配置

GlassFish 支持自动部署、命令行部署及通过管理界面部署应用程序,有关命令行部署及通过管理界面部署方式请参见 GlassFish 的帮助。下面介绍在 GlassFish 3.1 上自动部署 SuperMap iServer 的过程。

启动 GlassFish,将 war 包放入【GlassFish 根目录】\glassfish\domains\【domain-name】\autodeploy 目录下,GlassFish 就可以将 war 包发布为 Web 服务,其中【domain-name】指正在运行的 GlassFish 领域名。对于 iserver#help.war 和 iserver#iClient.war,需要将它们重命名使得名称中不包含特殊符号“#”,如将 iserver#help 改为 help.war。

启动 GlassFish 后,可以通过访问 GlassFish 的管理界面,即 http://<server>:<port>/common/index.jsf (GlassFish 默认的管理端口是 4848)来查看 war 包的部署情况。也可通过该管理界面进行 war 包的部署。

注意:

GlassFish 的运行需要完整的 JDK 而不是 JRE,且需要把 %JAVA_HOME%\Bin 加入 PATH 中。

在 WildFly Application Server 上部署

在 WildFly Application Server 上部署 SuperMap iServer 前,请检查软件环境是否满足需求,请参考 war 包部署前的环境配置

Windows 系统下,在 WildFly 10.1.0.Final 上部署 SuperMap iServer 的过程如下:

1. 解压缩 war 包到如下目录:【WildFly 根目录】\standalone\deployments,并重命名,使得解压缩后的文件夹名称以.war 结尾,如将 war 包 iserver.war 解压缩后重命名为 iserver.war。对于 war 包 iserver#help 和 iserver#iClient,还须使解压缩后的文件夹名称中不包含特殊符号“#”,如分别重命名为 help.war 和 iClient.war。在该文件夹下创建3个空文件,并分别命名为:help.war.dodeploy、iClient.war.dodeploy、iserver.war.dodeploy。

2. 发布 iserver 时,修改【WildFly 根目录】\standalone\configuration\standalone.xml 文件,删去下面两行。

<extension module="org.jboss.as.jaxrs"/>

<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>

另外,还需要在 standalone.xml 文件中的以下标签内添加 max-post-size="2147483648" ,此值单位为 字节,即设置允许向 iServer 上传的文件大小最大为2G,您可以根据具体业务需求设置。如果不设置,则 WildFly 默认允许上传的文件大小最大为10M。

<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" max-post-size="2097152"/>

3. 将 help.war\html 目录下的 OnlineHelp.zip 解压到当前目录。

4. 启动 WildFly,即在【WildFly 根目录】\bin 目录下,运行 standalone.bat,即可将 SuperMap iServer 的 war 包发布为 Web 服务。

启动 WildFly 后,可以通过访问 WildFly 的管理界面,即 http://<server>:<port>/admin-console 来查看 war 包的部署情况。也可以通过管理界面进行 war 包的部署。

注意

1. 在 WildFly 上部署的 iServer 服务,启动 WildFly 时需要添加-b 0.0.0.0参数,才能在其他计算机上访问,否则只能在本机访问服务。如 Windows 操作系统上可通过命令行启动 WildFly:

standalone.bat -b 0.0.0.0

Linux 操作系统上启动 WildFly 的方法为:

./standalone.sh -b 0.0.0.0

2. 在 WildFly 中部署 SuperMap iServer 服务时,建议目录里不要包含非英文字符。

3. 在 WildFly 中部署 SuperMap iServer 服务时,用户需要在 【WildFly 根目录】\modules\system\layers\base\sun\jdk\main\module.xml 文件的 paths 节点添加下面四个依赖:

<path  name="sun/java2d"/>

<path  name="sun/java2d/pipe"/>

<path  name="com/sun/net/httpserver"/>

<path  name="com/sun/org/apache/xml/internal/security/exceptions"/>

在 TongWeb 上部署

在 TongWeb 上部署 Supermap iServer 前,请检查软件环境是否满足需求,请参考 war 包部署前的环境配置

注意

1.为保证SuperMap iServer文件选择器可以正常使用,需要在TongWeb中配置URL参数允许存在未编码的特殊字符,此配置更改后无需重启Tongweb服务即可生效:访问TongWeb管理控制台,在 WEB容器配置>HTTP通道管理>tongweb-http-listener>其他property属性,新增relaxedPathChars与relaxedQueryChars属性,参数值配置为[]|{}。

2.在 TongWeb 配合SuperMap iServer 11.2.1 以上版本及 JDK 11 的运行环境下,可能会出现解压文件出错的情况,对应解决方案:需要在tongweb根目录/bin/external.vmoptions中,添加-Djdk.util.zip.disableZip64ExtraFieldValidation=true。

3.为避免项目包里面的静态资源加载异常,需在TongWeb管理端中的WEB容器配置->HTTP通道管理,点击tong-http-listener,到其他Property属性中新增两个属性:cacheMaxSize=20000、cachingAllowed=true。

4.TongWeb默认禁用DELETE、PUT请求,会导致使用相关请求的功能异常,比如删除服务;所以需要在TongWeb的管理端中的WEB容器配置->HTTP通道管理,点击tong-http-listener,修改其他设置->禁用HTTP请求方法,可参考如下配置:

Windows 系统下,在不同版本的TongWeb上部署iServer,步骤也稍有不同,具体包含如下步骤:

TongWeb 5.0

1.为 TongWeb 指定 SuperMap iObjects Java 的路径,即在【TongWeb 根目录】\bin\startserver.bat 的 Djava.library.path 中加入 SuperMap iObjects Java 的 bin 路径,如 Djava.library.path=”C:\SMO_Java_602_7119_Bin\Bin”。

2.把解压后的 war 包放入如下目录:【TongWeb 根目录】\autodeploy,对于 iserver#help.war 和 iserver#iCl

ent.war,需要将它们重命名使得名称中不包含特殊符号“#”后再部署,如将 iserver#help.war 改为 help.war。启动 TongWeb,就可以将 war 包发布为 Web 服务。

3.在【TongWeb 根目录】\config\twns.xml 中找到 help 和 iClient 对应的 web-app 节点,将 context-root 分别改为 iserver/help 和 iserver/iClient。

4.启动 TongWeb 后,可以通过访问 TongWeb 的管理界面,来查看 war 包的部署情况。也可通过该管理界面进行 war 包的部署。TongWeb 5.0的管理控制台地址为 http://<server>:<port>/twns。

TongWeb 6.X

1.在【TongWeb 根目录】\bin\startserver.bat文件中设置如下内容:

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true。

注意:

1.当涉密环境中 TongWeb 通过 deb 包方式安装部署 iServer,startserver.sh 配置文件是无法修改的(一但修改则无法允许 startserver.sh 脚本)。可将如下参数添加到 【TongWeb 安装路径】/bin文件夹下 external.vmoptions 配置文件:

-Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true

2.修改 【TongWeb 安装路径】/conf 文件夹下的配置文件(tongweb.properties)。在配置文件中加入如下内容:

tongweb.util.scan.StandardJarScanFilter.jarsToSkip=jersey-*.jar,hadoop-*.jar,tyrus-server*.jar

3.启动 TongWeb,设置 JVM 参数。

在【TongWeb 安装路径】/bin 目录下执行启动:

nohup ./ startserver.sh &

在浏览器中输入TongWeb 管理控制台地址:http://<server>:<port>/console,设置JVM参数。

在“启动参数设置”-“其他 jvm 参数”中配置 jvm 参数。点击“添加”,输入以下参数并保存:

-Dorg.sqlite.lib.path=/opt/SuperMap/iserver_support/sqlite-jdbc

-Dorg.sqlite.lib.name=libsqlitejdbc.so

-Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true

-Djava.library.path=${TongWeb_Home}/lib:${TongWeb_Home}/bin:${JAVA_HOME}/bin:/opt/SuperMap/iserver_support/objectsjava/bin

-Djava.ext.dirs={JAVA_HOME}/jre/lib/ext:/opt/SuperMap/iserver_support/objectsjava/bin

其中:

-Djava.library.path 配置环境变量、组件的路径;

-Djava.ext.dirs 配置 jar 扩展以及组件变量,未配置会造成用户开发的 war 包程序读取 supermap 相关类库失败。

4.修改配置后,重启TongWeb,部署iserver.war。有以下两种部署方式:

  • 自动部署 iserver.war

把解压后的 war 包放入如下目录:【TongWeb 根目录】\autodeploy,对于 iserver#help.war 和 iserver#iClient.war,需要将它们重命名使得名称中不包含特殊符号“#”后再部署,如将 iserver#help.war 改为 help.war。启动 TongWeb,就可以将 war 包发布为 Web 服务。

  • 通过管理控制台部署iserver.war
  • 在浏览器中输入TongWeb 管理控制台地址:http://<server>:<port>/console
  • 输入登录 TongWeb 的用户名、密码。TongWeb6.0 默认用户名为 twnt,密码为 twnt123.com
  • 依次点击“应用管理”、“部署应用”
  • “文件位置”需选择“服务器”,选择 iserver.war 所在的位置,点击“开始部署”
  • 依照顺序填写应用部署的附加信息,也可均采用默认值。点击“完成”
  • 部署完成后,在“应用管理”页面进行查看,状态为“已启动”表示部署成功。点击“访问”,即可访问 iServer

5. 启动 TongWeb 后,可以通过访问 TongWeb 的管理界面,来查看 war 包的部署情况。

TongWeb 7.0

TongWeb 7.0 的部署过程与 TongWeb 6.X 基本一致,可参考 6.X 的配置步骤部署。

跨域访问配置

若您需要在 iServer 启动后允许来自其他服务器的跨域请求访问成功,可以通过修改 web.xml 配置文件(位于【TongWeb 根目录】\autodeploy\iserver\WEB-INF目录下)来进行跨域访问的相关配置,添加如下内容:

    <filter>
        <filter-name>CorsFilter</filter-name>
        <filter-class>com.tongweb.catalina.filters.CorsFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
            <param-name>cors.allowed.origins</param-name>
            <param-value>*</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.methods</param-name>
            <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.headers</param-name>
            <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
        </init-param>
        <init-param>
            <param-name>cors.exposed.headers</param-name>
            <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
        </init-param>
        <init-param>
            <param-name>cors.support.credentials</param-name>
            <param-value>false</param-value>
        </init-param>
    </filter>
    <filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>com.tongweb.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <init-param>
            <param-name>antiClickJackingEnabled</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>antiClickJackingOption</param-name>
            <param-value>SAMEORIGIN</param-value>
        </init-param>
        <init-param>
            <param-name>blockContentTypeSniffingEnabled</param-name>
            <param-value>false</param-value>
        </init-param>
        <async-supported>true</async-supported>
    </filter>
   ...
   <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
   </filter-mapping>
   <filter-mapping>
        <filter-name>httpHeaderSecurity</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

请注意,在 web.xml 中定义 Filter 和 FilterMappping 时,各 Filter 的加载和执行有严格的顺序关系,该顺序关系和各 web filter 的定义顺序一致。若您需要更精准地控制跨域访问请求,请参阅:配置启动跨域访问白名单。修改完成后,重启 tongweb 服务,即可进行从其他服务器对本机 iServer 的跨域访问。

在 InforSuite AS 上部署

1. 修改中创中间件的配置

在中创安装目录的 as/config 下的文件 asenv.conf 中添加如下内容:

AS_JAVA="/opt/SuperMap/iserver_support/jre"

export SUPERMAP_ROOT="/opt/SuperMap/iserver_support"

export UGO_HOME="${SUPERMAP_ROOT}/objectsjava"

export LD_LIBRARY_PATH="${UGO_HOME}/bin:${AS_JAVA}/lib/mips64/:${LD_LIBRARY_PATH}:${UGO_HO

ME}/systemlibs"

export LANG=zh_CN.UTF-8

echo UGO_HOME=${UGO_HOME}

echo SUPERMAP_ROOT=${SUPERMAP_ROOT}

echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH}  

2. 启动并配置中创中间件

启动中间件,即在安装目录的 as/bin下执行:

./startserv

3. 开启中创中间件管理界面

在安装目录的as/bin下执行:

sh asadmin enable-secure-admin

4. 进入管理界面(http://<ip>:8060),在【JVM设置】中配置 jvm 参数,点击【添加 jvm 选项】,输入以下参数:

-Dorg.sqlite.lib.path=/opt/SuperMap/iserver_dependlibs_10.1.3/Bin

-Dorg.sqlite.lib.name=libsqlitejdbc.so

5. 发布 iserver.war

在 WebSphere Application Server 上部署

操作流程

在 WebSphere Application Server 上(以 WAS7为例)部署 SuperMap iServer 的过程:

1.WAS 启动成功后,浏览器中输入 http://<server>:<port>/ibm/console 登录 WAS 的管理控制台,在 Applications→Application Types→WebSphere enterprise applications 选项卡中,单击 install 即可开始安装,如下图:

用户还可在此界面选择某个服务控制服务的启动/停止状态。

注意:对于 iserver#help.war 和 iserver#iClient.war,需要将它们重命名使得名称中不包含特殊符号“#”,如将 iserver#help.war 改为 help.war。

2. 在如下对话框中,用户可从本地或远程文件系统中选择 war 包进行安装。选择之后单击“Next”按钮;

3.在“Preparing for the application Installation”中可选择“Fast Path”和“Detailed”进行安装,前者是仅当需要其他信息时才提示,后者会显示所有的安装选项和参数。这里选择“Fast Path”,单击“Next”按钮;

4.在“Select Installation options”中指定可用于准备和安装应用程序的各种选项,这里保持默认,单击“Next”按钮;

5.在“Map modules to servers”中将模块映射至服务器,可将模块安装在同一服务器上或安装在几台服务器上,也可以安装在 Web 服务器上。若有多个服务器可以选择,则可选择欲安装的目标服务器,若只有一个服务器,则不用选择,默认安装在当前服务器。单击“Next”按钮;

6.在“Map virtual hosts for Web modules”一步中,若有多个 virtual host,选择欲映射的一个,若只有一个,则可以不选,默认使用当前 virtual host。如下图,单击“Next”按钮;

7.在“Map context root for Web modules”一步中为 Web 应用配置上下文根路径,如下图,SuperMap iServer 的核心服务的 Context Root 为 /iserver(如果 iserver.war 被重命名,比如被重命名为 renameiserver.war,则 Context Root 应为/renameiserver):

OnlineHelp 的 Context Root 为 /iserver/help,客户端软件开发工具包 iClient 的 Context Root 为 /iserver/iClient。

8.在“Summary”一步选择“Finish”,然后在接下来的一步单击“Save”保存配置,如下图:

9. 配置参数 com.ibm.ws.classloader.strict,将其值定义为 true。即单击 Servers→Server Types→WebSphere application servers→“server_name”,然后进入 Java and process management→Process definition→Java virtual machine→Custom properties 界面,单击“New”按钮,如下图所示:

注意:上图是 WebSphere 7.0.0.11 的配置界面。

10. 配置完成之后单击“Save”保存配置。

在 Jetty 上部署

在 Jetty 上部署 Supermap iServer 前,请检查软件环境是否满足需求,请参考 war 包部署前的环境配置

Jetty 支持自动部署和编写配置文件部署应用程序。通过编写配置文件方式,部署应用程序请参见 Jetty 的帮助。下面介绍在 Jetty 8.1 上自动部署 SuperMap iServer 的过程。

1、解压缩 SuperMap iServer 的 war 包到某个目录,然后将解压缩包中名为 iserver.war 文件,放到【Jetty 根目录】\webapps 目录下,启动 Jetty ,Jetty  就可以将 iserver.war 发布为 Web 服务 。

进入 Jetty 根目录,打开命令行窗口,输入如下命令,即可启动 Jetty 服务。

java -jar start.jar

进入命令行窗口,通过 ctrl+c 快捷方式,即可关闭启动的 Jetty 服务。

2、对于解压缩包中名为 iserver#help.war 和 iserver#iClient.war 文件,需要将它们重命名使得名称中不包含特殊符号“#”后再部署,如将 iserver#help 改为 help.war ,iserver#iClient.war 改为 iClient.war,然后将 help.war 和 iClient.war 文件放在【Jetty 根目录】\webapps 目录下。

3、此时启动 Jetty ,Jetty  可以将 help.war 和 iClient.war 发布为 Web 服务 ,将 help.war 发布为在线形式后,访问的 URI 为:http://<server>:<port>/help, 将  iClient.war 发布为在线服务后,访问的 URI 为:http://<server>:<port>/iClient。我们期望访问 help 的 URI 地址为:http://<server>:<port>/iserver/help,访问 iClient 的 URI 为:http://<server>:<port>/iserver/iClient。

4、想要按期望的  URI 地址访问 help 和 iClient 只需做如下操作即可,以 help 为例做说明:

  • 进入【Jetty 根目录】\contexts 目录,复制一份 test.xml 文件到本目录,并重命名为 help.xml
  • 打开 help.xml 文件,将 help.xml 文件中对应的代码替换为下面两行

     <Set name="contextPath">/iserver/help</Set>

     <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/help.war</Set>

  • 删除下面这行代码

     <Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/contexts/test.d/override-web.xml</Set>

  • 保存 help.xml 文件,启动 Jetty ,就可以通过访问 http://<server>:<port>/iserver/help 地址来查看帮助文档。

注意:通过web中间件的管理控制台重新部署iserver.war后,需要重启web中间件,否则会导致iServer启动失败。

在宝兰德应用服务器上部署

在宝兰德应用服务器上部署 Supermap iServer 前,请检查软件环境是否满足需求,请参考 war 包部署前的环境配置

下面介绍在宝兰德应用服务器 9.5 上自动部署 SuperMap iServer 的过程。

1. 修改实例配置

启动宝兰德中间件并访问,在示例管理->实例名中,基本信息->系统属性中增加如下配置,并保存:

  • 将 com.bes.enterprise.web.util.scan.StandardJarScanFilter.jarsToScan 参数设置为

log4j-taglib*.jar,log4j-web*.jar,log4javascript*.jar,slf4j-taglib*.jar,*adminui*.jar,*webui*.jar,*vue*.jar,*axios*.jar,*webjar*.jar,*swagger-ui*.jar

  • 将 com.bes.enterprise.web.util.scan.StandardJarScanFilter.jarsToSkip 参数设置为

*.jar

2. 修改 JVM 配置

请根据所在机器的物理内存情况进行设置,并保存。

3. 移除与 iServer 冲突的 jar

在安装目录的 /server/lib 下执行:

mv bes-websocket.jar bes-websocket.jar.bak

4. 启动实例,选择 iserver.war 所在路径,部署并发布 SuperMap iServer。