本章节提供了将 WAR 文件部署到 Apache Tomcat 的示例说明。有关更新到新版本的 SOAtest 和 Virtualize 服务器的说明,请参阅升级 Apache Tomcat 部署

第一个示例概述了在 Apache Tomcat 的根上下文中部署 WAR 文件的推荐方法。第二个示例描述了一种更简单(但不推荐)安装方法的快捷方式。使用“non-root”上下文可能不适用于某些 servlet 容器。 

Apache Tomcat 部署示例 1(推荐方法)

在根上下文路径上使用 Apache Tomcat 部署 WAR 文件的一种方法,如下所示:

  1. 创建一个新文件夹作为 <SOAVIRT_HOME>。它可以定位于除了 Apache Tomcat webapps 目录之外的任何位置。例如,在 Windows 上,您可以使用 c:/wars/soavirt
  2. 将 WAR 文件内容解压到 <SOAVIRT_HOME> 中。
  3. http://tomcat.apache.org/ 为平台下载 Apache Tomcat 8.5 或 9.0。
  4. 将下载的 Apache Tomcat 解压到所选位置(<TOMCAT_HOME>)。
  5. <TOMCAT_HOME>/conf/Catalina/localhost/ 中,创建一个空的 ROOT.xml 文件。
  6. 打开刚刚创建的 ROOT.xml 文件,添加类似下面的 Context 元素(根据具体的 <SOAVIRT_HOME> 位置,对 docBase 的绝对路径进行相应调整):

    <Context 
      docBase="c:/wars/soavirt" 
      path="" 
      reloadable="true" 
    />
  7. (可选)如果希望在 HTTPS 上部署 WAR 文件,请执行以下步骤来配置 SSL:
    1. 通过执行以下命令创建密钥库文件来存储服务器的私钥和自签名证书:

      <JAVA_HOME>/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/soavirt.keystore
    2. 根据提示,为所有密码指定“changeit”。建议密钥库和 <tomcat> 别名密码相同。
    3. soavirt.keystore 文件将在指定目录中创建。

    4. 取消注释 <TOMCAT_HOME>/conf/ 目录下 server.xml 配置文件中的 SSL HTTP/1.1 Connector 条目

    5. 并更新 keystoreFile 属性值:

      <!-- 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="/path/to/soavirt.keystore" keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS"/>
  8. <SOAVIRT_HOME>/WEB-INF/ 目录的 config.properties 文件中指定 Apache Tomcat 使用的端口(详情请参阅服务器配置)。例如,可以使用 server.port.http=8080server.port.https=8443。在 config.properties 文件中指定的端口必须与 Tomcat 配置中指定端口相匹配。
  9. <SOAVIRT_HOME>/WEB-INF/ 目录的 config.properties 文件中指定合适的许可证(详情请参阅服务器配置)。
  10. 启动 Tomcat(例如,通过 <TOMCAT_HOME>/bin)。
  11. 浏览到 http://localhost:8080/(根据需求调整端口)。以下信息确定应用程序是否安装正确: 

    此服务器上没有部署。无法响应该请求:/。

    默认情况下,将在 <SOAVIRT_HOME> 中创建工作空间目录。

Apache Tomcat 部署示例 2(快捷方法)

虽然这个方法比第一个方法更简单,但是不推荐使用,因为它删除了默认的 Tomcat ROOT web 应用程序。

  1. http://tomcat.apache.org/ 为平台下载 Apache Tomcat 8.5 或 9.0。
  2. 将下载的 Apache Tomcat 解压到所选位置(<TOMCAT_HOME>)。
  3. 从 webapps 目录删除“ROOT”文件夹。
  4. soavirt_<VERSION>.war 文件重命名为 ROOT.war
  5. ROOT.war 复制到 <TOMCAT_HOME>/webapps/ 文件夹。
  6. (可选)如果希望在 HTTPS 上部署 WAR 文件,请执行以下步骤来配置 SSL:
    1. 通过执行以下命令创建密钥库文件来存储服务器的私钥和自签名证书:

      <JAVA_HOME>/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/soavirt.keystore
    2. 根据提示,为所有密码指定“changeit”。建议密钥库和 <tomcat> 别名密码相同。
    3. soavirt.keystore 文件将在指定目录中创建。 
    4. 取消注释 <TOMCAT_HOME>/conf/ 目录下 server.xml 配置文件中的 SSL HTTP/1.1 Connector 条目并更新 keystoreFile 属性值:

      <!-- 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="/path/to/soavirt.keystore" keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS"/>
  7. 编辑存储在 <TOMCAT_HOME>/webapps 文件夹中的现有 config.properties 文件(或创建一个新文件),并为 Apache Tomcat 使用的端口添加条目(详情请参阅服务器配置)。例如,添加 server.port.http=8080server.port.https=8443。在 config.properties 文件中指定的端口必须与 Tomcat 配置中指定端口相匹配。
  8. <TOMCAT_HOME>/webapps/ 目录下的 config.properties 文件中指定相应的许可证(详情请参阅服务器配置)。
  9. 启动 Tomcat(例如,通过 <TOMCAT_HOME>/bin)。
  10. 浏览到 http://localhost:8080/(根据需求调整端口)。以下信息确定应用程序是否安装正确:

    此服务器上没有部署。无法响应该请求:/。

    默认情况下,将在 <TOMCAT_HOME>/webapps/ROOT 中创建工作空间目录。

其他 Tomcat 配置

根据您的基础设施和项目需求,您的 Tomcat 服务器可能需要额外的配置。

URI 字符编码

SOAtest 和 Virtualize 服务器支持 Tomcat 的 relaxedPathChars 和 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="&quot; &lt; &gt; [ \ ] ^ ` { | }"
   relaxedQueryChars="&quot; &lt; &gt; [ \ ] ^ ` { | }"
/>

自定义状态消息配置

您可以启用 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

  • No labels