本章节提供了将 WAR 文件部署到 Apache Tomcat 的示例说明。有关更新到新版本的 SOAtest 和 Virtualize 服务器的说明,请参阅升级 Apache Tomcat 部署。
第一个示例概述了在 Apache Tomcat 的根上下文中部署 WAR 文件的推荐方法。第二个示例描述了一种更简单(但不推荐)安装方法的快捷方式。使用“non-root”上下文可能不适用于某些 servlet 容器。
在根上下文路径上使用 Apache Tomcat 部署 WAR 文件的一种方法,如下所示:
c:/wars/soavirt
。<TOMCAT_HOME>/conf/Catalina/localhost/
中,创建一个空的 ROOT.xml 文件。打开刚刚创建的 ROOT.xml 文件,添加类似下面的 Context 元素(根据具体的 <SOAVIRT_HOME> 位置,对 docBase 的绝对路径进行相应调整):
<Context docBase="c:/wars/soavirt" path="" reloadable="true" /> |
通过执行以下命令创建密钥库文件来存储服务器的私钥和自签名证书:
<JAVA_HOME>/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/soavirt.keystore |
soavirt.keystore
文件将在指定目录中创建。
取消注释 <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"/> |
<SOAVIRT_HOME>/WEB-INF/
目录的 config.properties 文件中指定 Apache Tomcat 使用的端口(详情请参阅服务器配置)。例如,可以使用 server.port.http=8080
或 server.port.https=8443
。在 config.properties 文件中指定的端口必须与 Tomcat 配置中指定端口相匹配。<SOAVIRT_HOME>/WEB-INF/
目录的 config.properties 文件中指定合适的许可证(详情请参阅服务器配置)。<TOMCAT_HOME>/bin
)。浏览到 http://localhost:8080/(根据需求调整端口)。以下信息确定应用程序是否安装正确:
此服务器上没有部署。无法响应该请求:/。 |
默认情况下,将在 <SOAVIRT_HOME> 中创建工作空间目录。
虽然这个方法比第一个方法更简单,但是不推荐使用,因为它删除了默认的 Tomcat ROOT web 应用程序。
<TOMCAT_HOME>/webapps/
文件夹。通过执行以下命令创建密钥库文件来存储服务器的私钥和自签名证书:
<JAVA_HOME>/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /path/to/soavirt.keystore |
取消注释 <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"/> |
<TOMCAT_HOME>/webapps
文件夹中的现有 config.properties 文件(或创建一个新文件),并为 Apache Tomcat 使用的端口添加条目(详情请参阅服务器配置)。例如,添加 server.port.http=8080
或 server.port.https=8443
。在 config.properties 文件中指定的端口必须与 Tomcat 配置中指定端口相匹配。<TOMCAT_HOME>/webapps/
目录下的 config.properties 文件中指定相应的许可证(详情请参阅服务器配置)。<TOMCAT_HOME>/bin
)。浏览到 http://localhost:8080/(根据需求调整端口)。以下信息确定应用程序是否安装正确:
此服务器上没有部署。无法响应该请求:/。 |
默认情况下,将在 <TOMCAT_HOME>/webapps/ROOT
中创建工作空间目录。
根据您的基础设施和项目需求,您的 Tomcat 服务器可能需要额外的配置。
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="" < > [ \ ] ^ ` { | }" 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。