介绍

Tomcat 可以使用 Apache Portable Runtime 来提供更好的可扩展性、性能以及与本地服务器技术的更好集成。 Apache Portable Runtime 是一个高度可移植的库,是 Apache HTTP Server 2.x 的核心。 APR 有许多用途,包括访问高级 IO 功能(如 sendfile、epoll 和 OpenSSL)、 操作系统级功能(随机数生成、系统状态等)以及本地进程处理(共享内存、NT 管道和 Unix 套接字)。

这些特性使 Tomcat 成为一个通用的 Web 服务器,将能够更好地与其他原生 Web 技术集成, 并且总体上使 Java 作为一个成熟的 Web 服务器平台更加可行,而不仅仅是一个以后端为中心的技术。

安装

APR 支持需要安装三个主要的原生组件:

  • APR 库

  • Tomcat 使用的 APR 的 JNI 包装器 (libtcnative)

  • OpenSSL 库

Windows

Windows 二进制文件提供了 tcnative-1,这是一个静态编译的 .dll,包含 OpenSSL 和 APR。 它可以从 此处 下载, 提供 32 位或 AMD x86-64 二进制文件。 在注重安全的生产环境中,建议为 OpenSSL、APR 和 libtcnative-1 使用单独的共享 dll, 并根据安全公告按需更新它们。 Windows OpenSSL 二进制文件可从官方 OpenSSL 网站链接获取(见相关/二进制文件)。

Linux

大多数 Linux 发行版将提供 APR 和 OpenSSL 的软件包。 然后,必须编译 JNI 包装器 (libtcnative)。它依赖于 APR、OpenSSL 和 Java 头。

要求:

  • APR 1.2+ 开发头文件 (libapr1-dev 包)

  • OpenSSL 1.0.1+ 开发头文件(libssl-dev 包)

  • 来自 Java 兼容 JDK 1.4+ 的 JNI 头文件

  • GNU 开发环境 (gcc, make)

包装器库源位于 Tomcat 二进制捆绑包的 bin/tomcat-native.tar.gz 归档中。 安装构建环境并提取源存档后,可以使用 (从包含 configure 脚本的文件夹中) 编译包装器库:

./configure && make & & make install

APR 组件

正确安装库并 Java 可使用后(如果加载失败,将显示库路径), Tomcat 连接器将自动使用 APR。

一旦库被正确安装并且Java可以使用(如果加载失败,将显示库路径),Tomcat连接器将自动使用APR。 连接器的配置类似于常规连接器,但有一些额外的属性用于配置APR组件。 请注意,对于大多数用例,默认设置已经经过良好调优,通常不需要额外调整。

启用APR时,Tomcat中还会启用以下功能:

  • 默认在所有平台上生成安全的会话ID(在Linux以外的平台上,需要使用配置的熵进行随机数生成)

  • 状态Servlet会显示Tomcat进程的内存使用和CPU使用的操作系统级别统计

APR 生命周期侦听器配置

请参阅 listener 配置。

APR 连接器配置

HTTP/HTTPS

有关 HTTP 配置,请参阅 HTTP 连接器配置文档。

有关 HTTPS 配置,请参阅 HTTPS 连接器配置文档。

示例 SSL 连接器声明如下:

./configure && make & & make install
<Connector port="443" maxHttpHeaderSize="8192"
                 maxThreads="150"
                 enableLookups="false" disableUploadTimeout="true"
                 acceptCount="100" scheme="https" secure="true"
                 SSLEnabled="true"
                 SSLCertificateFile="${catalina.base}/conf/localhost.crt"
                 SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" />

AJP

有关 AJP 配置,请参阅 AJP 连接器配置文档。