war 包的部署 |
SuperMap iServer 的 iserver.war 包部署成功后,访问的 URI 为:http://<server>:<port>/iserver/services。若 iserver.war 被重命名,比如被重命名为 renameiserver.war,则需要修改 URI 为 http://<server>:<port>/renameiserver/services。
在 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"
/>
建议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 上部署 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 上部署 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 上部署 Supermap iServer 前,请检查软件环境是否满足需求,请参考 war 包部署前的环境配置。
注意:
1.为保证SuperMap iServer文件选择器可以正常使用,需要在TongWeb中配置URL参数允许存在未编码的特殊字符,此配置更改后无需重启Tongweb服务即可生效:访问TongWeb管理控制台,在 WEB容器配置>HTTP通道管理>tongweb-http-listener>其他property属性,新增relaxedPathChars与relaxedQueryChars属性,参数值配置为[]|{}。
Windows 系统下,在不同版本的TongWeb上部署iServer,步骤也稍有不同,具体包含如下步骤:
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。
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 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 的跨域访问。
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 上(以 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 上部署 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。