Jetty 是一款輕量級、高擴展性的 Servlet 容器,支援 SPDY、WebSocket、OSGi、JMX、JNDI、JAAS 等先進技術。本文詳細講解 Jetty 9.3.x 獨立運行模式的安裝、啟動、部署、目錄結構、核心配置與模塊化架構。
Jetty 為跨平台二進制包,解壓即用。
cd jetty-distribution-9.3.2 java -jar start.jar
輸出關鍵信息:
Started ServerConnector@3b81a1bc{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
Started @3491ms
瀏覽器訪問 https://localhost:8080/ 顯示 Jetty 預設歡迎頁。
將 WAR 包放入 webapps/ 目錄,Jetty 熱部署掃描器 (預設 1 秒間隔) 會自動發現並部署,無需重啟。
| 目錄/文件 | 用途 |
|---|---|
| bin/ | 可執行腳本 |
| demo-base/ | 示例基礎配置 |
| etc/ | XML 配置文件 (模塊定義) |
| lib/ | 核心依賴 JAR |
| logs/ | 日誌輸出 |
| modules/ | 模塊定義文件 (*.mod) |
| resources/ | 外部資源配置 |
| webapps/ | WAR 包部署目錄 |
| start.ini (Windows) / start.d/ (Linux) | 啟用模塊清單 |
編輯 start.ini (或 start.d/http.ini):
## Connector port to listen on jetty.http.port=7070
保存後重啟生效。
編輯 start.ini,取消註釋並修改:
jetty.deploy.monitoredDir=webapps
改為自定義路徑,重啟生效。
Jetty 功能以模塊形式運行:HTTP、HTTPS、SSL、JMX、JNDI、WebSocket、Logging 等。
每個 .mod 文件聲明:
示例 logging.mod:
[xml] etc/jetty-logging.xml [files] logs/ [lib] lib/logging/*.jar resources/
方式 A:命令行 (生成 .ini 文件)
java -jar start.jar --add-to-startd=logging
方式 B:編輯 start.ini (推薦)
--module=logging
修改 etc/ 下對應 XML 文件。如調整日誌級別、輸出格式,編輯 etc/jetty-logging.xml。
jetty.base 目錄隔離配置與安裝包 (官方強烈推薦)詳細參考:Jetty 官方文檔