如何告诉 Apache Tomcat 谁必须处理接收到的数据?

How to tell Apache Tomcat who must handle received data?

我正在使用最新的 Apache Tomcat (9.0.16),以及最新的 Java / OpenSSL。我从 NEXUSe2e.org.

获得了一个带有服务器应用程序的 WAR 文件

我可以向服务发送安全消息。一段时间后,有人将安全回复消息作为新的 https 消息发送。

在日志记录中,我可以看到此消息已被 TomCat 解密。检测到这是一个新的SOAP action: ebXML.

已完成,使用文件 %catalina_home%\conf\server.xml

中的以下连接器
<Connector
  port="443"
  protocol="org.apache.coyote.http11.Http11AprProtocol"
  redirectPort="8443"/>

<Connector
  port="8443"
  protocol="org.apache.coyote.http11.Http11AprProtocol"

  SSLEnabled="true"
  secure="true"
  scheme="https"

  defaultSSLHostConfigName="_default_">
  <SSLHostConfig 
    hostName="_default_"
    certificateVerification="required"

    <Certificate
      certificateChainFile="conf\Certificates\TrustedCertificates.pem"
      certificateFile="conf\Certificates\... .crt"
      certificateKeyFile="conf\Certificates\... .private.key"/>
  </SSLHostConfig>
</Connector>

当数据被正确解密后,它必须转到我的服务器代码(NEXUSe2e)。 TomCat 如何知道谁必须处理数据?

Tomcat 通过查看您请求的 URL 知道哪个应用程序将处理您的请求,并检查是否有任何 context 匹配。没有等待或轮询,事情是自动链接的。

在您的情况下,您只是在 webapps 目录中复制一个 war 文件,这称为 Automatic Application Deployment。还有其他配置上下文的方法,但在足够的情况下保持简单是很好的。

如果您使用的是虚拟主机,事情会稍微复杂一些,因为 Tomcat 会首先检查您请求的域名,然后检查所关注的上下文。