什麼是嵌入式Tomcat? -來自WhatIs.com的定義

banq發表於2019-10-12

嵌入式Tomcat伺服器由單個Java Web應用程式和完整的Tomcat伺服器發行版組成,打包在一起並壓縮成單個JAR,WAR或ZIP檔案。

嵌入式Tomcat提供了一種打包Java Web應用程式的方法,該方法與基於微服務的軟體開發方法一致。它還使通過Docker容器分發Java Web應用程式和通過容器編排服務(例如Kubernetes或OpenShift)管理它們變得更加容易。

嵌入式Tomcat與獨立例項

在傳統設定中,企業將使用單個獨立的Tomcat伺服器,並將所有Java Web應用程式部署到該例項。然後,該一臺應用伺服器將在水平和垂直方向上進行叢集和擴充套件,以管理吞吐量和容量。使用這種傳統配置,Tomcat伺服器與部署到該伺服器的應用程式之間的基數始終是一對多。

對於嵌入式Tomcat伺服器,伺服器與應用程式之間的比率為1比1。單個Java Web應用程式已部署到單個Tomcat伺服器。與Tomcat伺服器和已部署的應用程式相關聯的所有檔案都被壓縮為單個存檔檔案,通常以.zip,.jar或.war副檔名。

術語嵌入式Tomcat的基礎是指應用程式和整個Tomcat伺服器打包在一個易於管理和壓縮的單個存檔檔案中。

嵌入式Tomcat如何工作?

嵌入式Tomcat伺服器的另一個關鍵元素是可執行檔案。只要計算機上已安裝JRE並配置了JAVA_HOME,在將JAR檔案的名稱提供給java -jar實用程式時,就可以從命令列執行嵌入式Tomcat伺服器。這是執行打包在名為embeded-tomcat-example.jar檔案的嵌入式Tomcat應用程式所需的命令:

java -jar embedded-tomcat-example.jar

命令完成後,Tomcat伺服器將啟動,並且可以通過HTTP請求(例如網頁,基於SOAP的Web服務或RESTful API呼叫)訪問部署在其中的Java Web應用程式。預設的嵌入式Tomcat埠是8080。

嵌入式Tomcat和Maven

建立嵌入式Tomcat檔案的最常見方法之一是使用Maven -Tomcat外掛進行構建。

通過這種方法,開發人員可以建立基於Maven的Java Web專案,而無需考慮應用程式的打包方式。然後,在Maven構建期間,將引用Tomcat外掛的exec-war-only開關。這是一個如何使用Maven-Tomcat外掛建立可執行的嵌入式Tomcat JAR檔案的示例。

/c/ embedded Tomcat example/maven-build
$ mvn clean install tomcat7:exec-war-only
<p>[INFO] --- embedded tomcat maven plugin running
<p>[INFO] -------------------------------------------
<p>[INFO] MAVEN BUILD SUCCESS : EMBEDDED TOMCAT JAR CREATED
<p>[INFO] -------------------------------------------
<p>[INFO] Elapsed time: 2.211 s
<p>[INFO] -------------------------------------------

嵌入式Tomcat和Spring Boot

Spring Boot是一個流行的基於Java的框架,用於開發微服務。預設情況下,用於構建Spring Boot應用程式的Spring Tool Suite(STS)IDE會在每次構建或部署時自動使用開發的微服務來建立嵌入式Tomcat伺服器。STS內建了其他功能,以促進基於微服務的開發,包括設定斷點以及隨後在嵌入式Tomcat伺服器上執行程式碼時逐步執行程式碼的功能。

嵌入式Tomcat替代品

Tomcat與其他Java應用程式伺服器(包括WebSphere,Jetty,Wildfly,Payara和JBoss)競爭。這些伺服器中的每一個都提供了用於建立單個JAR或WAR檔案的功能,在該檔案中嵌入了伺服器和應用程式。

從WebSphere Portal例項轉向微服務體系結構的IBM客戶端可以遵循帶有嵌入式WebSphere Liberty例項的通用遷移路徑。Jetty是Jenkins CI的獨立發行版中使用的嵌入式伺服器。Wildfly是高度模組化的,可以去除所有不需要的服務。當您希望伺服器佔用的空間最小時,它通常是嵌入式Tomcat例項的流行替代方法。

嵌入式Tomcat與單獨執行的效能

由於每個嵌入式Tomcat例項都執行自己的完整Tomcat伺服器例項,因此與獨立版本相比,前期效能成本較高。

例如,如果組織執行了10個嵌入式Tomcat例項,則將啟動10個單獨的Tomcat伺服器例項。但是,獨立例項僅將10個應用程式部署到一個例項。在這種情況下,獨立效能將更快,因為僅需啟動一個Java程式即可。所有傳入的請求都可以由高效執行緒處理。

使用嵌入式Tomcat,每個伺服器都需要自己的Java程式,並且其他執行緒可以處理傳入的請求。Java程式比單個執行執行緒需要更多的處理能力。因此,與承載多個應用程式的獨立伺服器相比,嵌入式Tomcat伺服器需要更多資源才能執行。

嵌入式Tomcat的好處

前面提到的將嵌入式Tomcat效能與獨立例項進行比較的場景,錯過了開發人員將應用程式部署到嵌入式Tomcat例項的原因。使用嵌入式Tomcat例項,可以使單個應用程式離線或重新啟動,而不會影響其他應用程式。使用獨立架構是不可能的。

此外,如果單個應用程式需要更多資源,則可以對其進行工作負載管理。在傳統的實現方式中,必須對單個Tomcat伺服器進行工作負載管理,這意味著即使僅部署的一個應用程式承受了較高的負載,每個託管應用程式都需要進行擴充套件。

嵌入式Tomcat和容器

在可執行的嵌入式Tomcat例項中交付Java Web應用程式的主要思想是能夠將該檔案移動到Docker容器中,並將該容器部署到容器託管的環境(如Kubernetes或OpenShift)中。此功能開啟了各種低成本的基於雲的伸縮選項,這些選項對於獨立的Tomcat例項不可用。

因此,使用嵌入式Tomcat伺服器是允許傳統開發的Java Web應用程式利用現代企業架構的關鍵。

 

相關文章