Jetty,是一個Servlet引擎,即是一個開源的Servlet容器,是基于Java的Web容器。它是使用Java語言編寫的,其API以一組JAR包的形式發布。
Jetty的基本數據模型是Handler,其架構比較簡單,其核心組件由Server和Connector兩個組件構成,整個Server組件是基于Handler容器工作的,Connector組件負責接受客戶端的連接請求,并將請求分配給一個處理隊列去執行。Jetty中還有JMX等一些其他的組件。
從某種程度上,可以把Jetty理解為一個嵌入式的Web服務器。Jetty可以作為嵌入式服務器使用,運行速度較快,而且是輕量級的,可以讓Java從test case中控制其運行,從而使自動化測試不再依賴外部環境,順利實現自動化測試。
歷史
Jetty最初由軟件工程師Greg Wilkins在悉尼的郊區巴爾曼開發,起初名為IssueTracker,后更名為MBServler,最終定名為Jetty。自1995年起,Jetty經歷了多次遷移和重要更新,包括從MortBay到sourceforge.net,再到codehaus.org,最后在2009年核心部件轉移到Eclipse.org。2016年,Jetty的代碼主倉庫遷移到了GitHub,繼續在Eclipse IP Process政策下開發。
版本發布
特性
Jetty設計的基本原則之一是易用性,它可以通過XML或API進行配置,且默認配置能滿足大多數需求。將Jetty嵌入到應用程序中只需很少的代碼。
Jetty適用于使用Ajax的Web2.0應用程序,能夠處理大量服務請求和長時間連接,不會因單個組件而影響整體性能。它利用Continuation機制處理大量用戶請求和長連接,并提供良好的接口,方便用戶根據需要修改Jetty的實現。
易嵌入性
Jetty設計為易于嵌入的組件,可以無需修改程序即可集成到應用程序中。它運行速度快,是輕量級的,適合在Java中進行自動化測試。
應用
Jetty在嵌入式Java應用程序中廣泛使用,是Eclipse IDE的組成部分,支持AJP、JASPI、JMX、JNDI、OSGi、WebSocket等技術。Apache Hadoop就是使用Jetty作為Web服務器的典型例子,其中NameNode和JobTracker通過Jetty呈現管理頁面,而TaskTracker使用Jetty接收映射和洗牌操作,盡管在Hadoop 0.23版后,洗牌操作已改用Netty。
和Tomcat比較
Jetty相對于Tomcat更輕量級,更適合不需要Tomcat高級特性的普通互聯網應用。Jetty的輕量級和靈活性使其在處理高并發細粒度請求的場景下更快速高效。而Tomcat則更適合支持大規模企業級應用。總的來說,Jetty更滿足公有云的分布式環境需求,而Tomcat更符合企業級環境。
代碼實例
作為嵌入式服務器使用代碼實例,需要的jar包包括commons-logging.jar、javax.servlet.jar、org.mortbay.jetty.jar、org.mortbay.jmx.jar。Jetty還提供了對應的maven插件,通過在maven pom文件中設置后,可以直接使用命令`mvn jetty:run`啟動。在Maven中使用jetty插件時,需要修改maven的setting.XML文件,增加相應的`
參考資料 >