war 包的部署

发送反馈


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属性,参数值配置为[]|{}。

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#iClient.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。

注意:

当涉密环境中 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。有以下两种部署方式:

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

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 为例做说明:

     <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>

 

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

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

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

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

1. 修改实例配置

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

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

*.jar

2. 修改 JVM 配置

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

3. 移除与 iServer 冲突的 jar

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

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

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