本章节提供了将 WAR 文件部署到 Apache Tomcat 的示例说明。有关更新到新版本的 SOAtest 和 Virtualize 服务器的说明,请查阅 升级 Apache Tomcat 部署 。
第一个示例概述了在 Apache Tomcat 的根上下文中部署 WAR 文件的推荐方法。第二个示例描述了一种更简单(但不推荐)安装方法的快捷方式。使用“non-root”上下文可能不适用于某些 servlet 容器。
Apache Tomcat 部署示例 1(推荐方法)
在根上下文路径上使用 Apache Tomcat 部署 WAR 文件的一种方法,如下所示:
- 创建一个新文件夹作为 <SOAVIRT_HOME>。它可以定位于除了 Apache Tomcat webapps 目录之外的任何位置。例如,在 Windows 上,您可以使用 c:/wars/soavirt。
- 将 WAR 文件内容解压到 <SOAVIRT_HOME> 中。
- 从 http://tomcat.apache.org/为平台下载 Apache Tomcat Core 7 或更高版本。
- 将下载的 Apache Tomcat 解压到所选位置(<TOMCAT_HOME>)。
- 在 <TOMCAT_HOME>/conf/Catalina/localhost/ 中,创建一个空的 ROOT.xml 文件。
打开 <TOMCAT_HOME>/conf/Catalina/localhost/ROOT.xml 文件,并添加一个上下文元素,如下所示(根据具体的 <SOAVIRT_HOME> 位置,根据需要对 docBase 绝对路径进行适当的调整):
<Context docBase="c:/wars/soavirt" path="" reloadable="true" />
- (可选)如果希望在 HTTPS 上部署 WAR 文件,请执行以下步骤来配置 SSL:
- 通过执行以下命令创建密钥存储文件来存储服务器的私钥和自签名证书:
<JAVA_HOME>/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/my/keystore
- 提示时指定 changeit 作为密码。
将在 /path/to/my 目录中创建一个名为“keystore”的新文件。取消对 <TOMCAT_HOME>/conf/server.xml 配置文件中的 SSL HTTP/1.1 连接器条目的注释:
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --> <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="${user.home}/.keystore" keystorePass="changeit" clientAuth="false" sslProtocol="TLS"/> keystoreFile attribute value to "/path/to/my/keystore"
- 通过执行以下命令创建密钥存储文件来存储服务器的私钥和自签名证书:
- 在 <SOAVIRT_HOME>/WEB-INF/config.properties 的 config.properties 文件中指定 Apache Tomcat 使用的端口(关于更多详情,请查阅 服务器配置 )。例如,可以使用
server.port.http=8080
或server.port.https=8443
。在 config.properties 文件中指定的端口必须与 Tomcat 配置中指定端口相匹配。 - 在 <SOAVIRT_HOME>/WEB-INF/config.properties 的 config.properties 文件中指定合适的许可证 (有关更多详情,请查阅 服务器配置 )。
- 启动 Tomcat(比如,从 <TOMCAT_HOME>/bin 中)。
- 浏览到 http://localhost:8080/ (根据需求调整端口)。以下信息确定应用程序是否安装正确:
There are no deployments on this server. Cannot respond to this request: /.
默认情况下,将在 <SOAVIRT_HOME> 中创建工作空间目录。
Apache Tomcat 部署示例 2(快捷方法)
虽然这个方法比第一个方法更简单,但是不推荐使用它,因为它删除了默认的 Tomcat ROOT web 应用程序。
- 从 http://tomcat.apache.org/下载平台的 Apache Tomcat Core 7 或更高版本。
- 将下载的 Apache Tomcat 解压到所选位置(<TOMCAT_HOME>)。
- 从 webapps 目录删除“ROOT”文件夹。
- 将 "soavirt_<version>.war” 文件重命名为 "ROOT.war"。
- 将 "ROOT.war” 复制到 <TOMCAT_HOME>/webapps/ 文件夹中。
- (可选)如果希望在 HTTPS 上部署 WAR 文件,请执行以下步骤来配置 SSL:
- 通过执行以下命令创建密钥存储文件来存储服务器的私钥和自签名证书:
<JAVA_HOME>/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/my/keystore
- 提示时指定“changeit”作为密码。
- 将在 /path/to/my 目录中创建一个名为“keystore”的新文件。
取消对 <TOMCAT_HOME>/conf/server.xml 配置文件中的 SSL HTTP/1.1 连接器条目的注释:
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --> <Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="${user.home}/.keystore" keystorePass="changeit" clientAuth="false" sslProtocol="TLS"/> keystoreFile attribute value to "/path/to/my/keystore"
- 通过执行以下命令创建密钥存储文件来存储服务器的私钥和自签名证书:
- 编辑存储在 <TOMCAT_HOME>/webapps 文件夹中的现有 config.properties 文件(或创建一个新文件),并为 Apache Tomcat 使用的端口添加条目(有关更多详情,请查阅 服务器配置 )。例如,添加
server.port.http=8080
或server.port.https=8443
。在 config.properties 文件中指定的端口必须与 Tomcat 配置中指定端口相匹配。 - 在 <TOMCAT_HOME>/webapps/config.properties 的 config.properties 文件中指定合适的许可证 (有关更多详情,请查阅 服务器配置 )。
- 启动 Tomcat(比如,从 <TOMCAT_HOME>/bin 中)。
- 浏览到 http://localhost:8080/ (根据需求调整端口)。以下信息确定应用程序是否安装正确:
There are no deployments on this server. Cannot respond to this request: /.
默认情况下,将在 <TOMCAT_HOME>/webapps/ROOT 中创建工作空间目录。
其他 Tomcat 配置
根据您的基础设施和项目需求,您的 Tomcat 服务器可能需要额外的配置。
URI 字符编码
SOAtest 和 Virtualize 服务器支持 Tomcat 的 relaxedPathChars
and relaxedQueryChars
属性。这些属性使您能够指定在 URI 路径和 URI 查询字符串中应允许哪些未编码字符。可以指定以下字符:" < > [ \ ] ^ ` { | }
有关更多详情,请参考 Tomcat 文档: https://tomcat.apache.org/tomcat-8.5-doc/config/http.html
如果不指定允许的字符,Tomcat 服务器将拒绝 URI 路径和查询中包含一个或多个未编码字符的消息。
将 relaxedPathChars
和 relaxedQueryChars
属性添加到 Tomcat server.xml 文件的 <Connector>
元素中, 并指定要允许的字符。如果有多个 <Connector>
元素,请将 属性添加值 protocol
设置为 HTTP
和 HTTPS
的元素中。
例如:
<Connector URIEncoding="UTF-8" allowTrace="true" connectionTimeout="20000" enableLookups="true" name="default" port="9080" protocol="HTTP/1.1" redirectPort="9443" server="Parasoft Server" relaxedPathChars="" < > [ \ ] ^ ` { | }" relaxedQueryChars="" < > [ \ ] ^ ` { | }" />
自定义状态消息配置
您可以启用 Tomcat 来设置自定义 HTTP 状态码消息。如果您的应答器设置了自定义 HTTP 状态消息,则这允许 Virtualize 在响应报头中自定义状态消息。在部署 Virtualize 服务器 WAR 文件时,将以下属性添加到 conf/catalina.properties 文件中:
org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER=true
有关设置此属性的其他信息,请查阅 https://tomcat.apache.org/tomcat-8.5-doc/config/systemprops.html 。