2016-11-16 58 views
8

在我的情況下,我們來考慮一個使用Spring Boot創建和配置的簡單RESTful服務。該服務與數據庫(例如Postgres)通信。在Tomcat/Jetty上部署的Spring啓動應用程序vs .war文件

是什麼之間的差異:

  • 構建春季啓動.jar文件並通過java -jar myservice.jar我的遠程公網主機上運行呢?

  • 包裝它.war文件,並在Tomcat/Jetty的部署呢?

第一個選項似乎更容易,你只需要運行一個.jar。在第二個選項中,您需要創建Tomcat實例,運行它,然後部署一個.war文件。 還有其他區別嗎?兩種方法的利弊?

回答

9

將它打包爲.war文件並將其部署到Tomcat/Jetty上?

不要儘可能地做到這一點。 原因:使用嵌入式tomcat(或任何其他服務器)構建微服務體系結構要容易得多。

隨着約什龍曾經在他的春天IO 「make Jar, not War」

會談在另一方面的人說,如果你有一個現有的基礎設施在那裏與servlet容器,並且已經有在那些運行多個application.wars servlet容器,你所要做的只是把你的應用程序打包成一個war文件並交給一個發佈團隊(或者你不得不重複使用現有的基礎設施),那麼這是一個不同的故事(但是,techworld是已經擺脫這種做法)。

再次,本着微服務的精神,本着春季啓動的目標,我鼓勵您使用嵌入式服務器並製作可運行jar文件,而不是使用傳統部署。

+0

你能說一些關於你提到的原因嗎?如果我對你有所瞭解,那麼你正在講的是與上面提到的@dahrens相反 – ilovkatie

+0

不是。達倫人所說的與我所說的完全不衝突。 –

1

product page所述,這些jar包含servlet容器,並將直接啓動它。

嵌入的Tomcat,Jetty的或暗潮直接(無需部署WAR文件)

如果您計劃在一臺主機沒有別的上運行你的應用程序旁邊(泊塢窗?),這可能是一個很好的可能性 - 如果你的主機包含其他應用程序,部署戰爭的方法會更有趣,因爲你可以在主機上只有一次這些servlet容器。

相關問題