Tomcat 基于 APR 的原生庫(kù)

2022-03-03 14:07 更新

簡(jiǎn)介

Tomcat 可以使用 Apache Portable Runtime(APR) 來(lái)增強(qiáng)可擴(kuò)展性與性能,并能更好地與原生服務(wù)器技術(shù)相集成。APR 是一種具有高度可移植性的類(lèi)庫(kù),是 Apache HTTP Server 2.x 的核心。APR 具有許多用途,包括訪問(wèn)高級(jí) IO 功能(比如 sendfile、epoll 和 OpenSSL)、系統(tǒng)級(jí)功能(隨機(jī)數(shù)生成、系統(tǒng)狀態(tài),等等)以及原生進(jìn)程處理(共享內(nèi)存、NT 管道、UNIX 套接字)。

這些特性能讓 Tomcat 成為一種通用的 Web 服務(wù)器,更使其更好地與原生的 Web 技術(shù)相集成。從整體上來(lái)說(shuō),這使得 Java 越來(lái)越有望成為一個(gè)成熟的 Web 服務(wù)器平臺(tái),而不單純是一種僅僅著重研究后端的技術(shù)。

安裝

APR 支持需要安裝三個(gè)關(guān)鍵的原生組件:

  • APR 庫(kù)
  • Tomcat 所用的 》JNI 包裝器
  • OpenSSL 庫(kù)

Windows

Windows 安裝文件從這里下載 32 位或 AMD 64 位,里面是包含 OpenSSL 和 APR 的集合文件。

Linux

多數(shù) Linux 分發(fā)版都會(huì)自帶 APR 與 OpenSSL 包。JNI 包裝器(litcnative)然后被編譯。它依賴 APR、OpenSSL 與 Java 頭。

需要:

  • APR 1.2+ 開(kāi)發(fā)頭(libarp-1 dev package)
  • OpenSSL 》》》
  • Java compatible JDK 1.4+》》
  • GNU 開(kāi)發(fā)環(huán)境(gcc,make)

APR 組件

當(dāng)所有的庫(kù)都正確安裝好且適用于 Java(如果加載失敗,就會(huì)顯示相關(guān)的庫(kù)路徑),Tomcat 連接器就會(huì)自動(dòng)使用 APR。這里,連接器的配置跟通常的配置沒(méi)什么不同,但會(huì)用一些特別的屬性來(lái)配置 APR 組件。對(duì)于大多數(shù)用例來(lái)說(shuō),這些屬性的默認(rèn)值都已經(jīng)非常適用了,根本不需要再加以微調(diào)。

當(dāng)啟用 APR 時(shí),Tomcat 同樣也啟用了下面這些功能:

  • 默認(rèn)在所有平臺(tái)安全會(huì)話 ID 生成(Linux 之外的平臺(tái)需要隨機(jī)數(shù)生成使用配置好的熵)。
  • 關(guān)于Tomcat 進(jìn)程的內(nèi)存使用和 CPU 使用情況的 OS 級(jí)統(tǒng)計(jì),由status servlet所顯示。

配置 APR 生命周期偵聽(tīng)器(APR Lifecycle Listener)

AprLifecycleListener

屬性 描述
SSLEngine 所要使用的 SSLEngine 名稱(chēng)。off:不使用 SSL。on:使用 SSL,但沒(méi)有特定引擎。默認(rèn)值為 on。這將初始化原生的 SSL 引擎,然后使用 SSLEnabled 屬性在連接器中》》》。范例:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
請(qǐng)?jiān)L問(wèn) OpenSSL 官方網(wǎng)站以詳細(xì)了解 SSL 硬件引擎與制造商的相關(guān)信息。

配置 APR 連接器

HTTP/HTTPS

關(guān)于 HTTP 配置的相關(guān)信息,可查閱 HTTP 連接器配置文檔
關(guān)于 HTTPS 配置的相關(guān)信息,可查閱 HTTPS 連接器配置文檔

下面這個(gè)范例介紹了 SSL 連接器的聲明:

<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

關(guān)于 AJP 配置的相關(guān)信息,可查閱 AJP 連接器配置文檔

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)