smart-servlet 是一款實現了 Servlet 3.1 規範,支持多應用隔離部署的的 Web 伺服器。儘管開源時長僅 1 個月,還有著諸多不成熟,但希望未來能成為如同 Tomcat、Undertow 般優秀的項目。為了這個目標,smart-servlet 準備了三年:
項目特色
架構設計
smart-servlet 在 smart-http 的基礎之上,通過繼承 HttpHandle 實現了 Servlet 規範。這意味著任何 smart-http 服務都可以通過單獨引入 smart-servlet 核心包的方式,將普通的 http 應用改造成 servlet 應用,而且這個成本是極低的。
示例演示
為了驗證 smart-servlet 對 servlet 3.1 實現的規範性,我們的演示示例直接移植了 Tomcat 安裝包中自帶的工程:docs、examples。其中examples 工程依賴需要依賴 tomcat 自身的一些 jar 包,故我們將 ${TOMCAT_HOME}/lib 目錄下的 jar 包拷貝到了 examples/WEB-INF/lib 目錄下。
接下來對工程進行編譯並運行 org.smartboot.servlet.starter.Bootstrap ,若控制臺列印如下信息說明啟動成功。打開瀏覽器訪問:http://127.0.0.1:8080/examples 便可體驗 smart-servlet 。
非正式評測
對於這款 servlet 容器,用戶可能更關心它相較於 tomcat 的優勢,為此我們做了一次簡單的評測。特別說明:這次評測並不正規,一方面 smart-servlet 既當裁判又當選手本就不公平;另一方面現階段 smart-servlet 還不夠成熟,不具備比較的條件。所以這裡提供的非正式評測結果權當 smart-servlet 的一種宣傳方式。
我們採用的測試方式為:
用 ab 壓測 examples 工程中的示例請求:http://127.0.0.1:8080/examples/servlets/servlet/HelloWorldExample,最終的表現結果如下:
詳細過程見:https://smartboot.gitee.io/book/smart-servlet/performance/test-data.html
最後
後面我們會保持穩定的開發節奏,持續打磨 servlet 規範的實現細節,爭取早日讓 smart-servlet 運行到生產環境中。同時非常歡迎社區中的朋友反饋改進建議,或者參與到這個項目的開發中來,一起見證它的成長。