2012-07-11 47 views
7

是否有任何集成良好的應用程序管理堆棧,允許構建,部署和更新作爲服務器運行的非應用程序的非.war Java應用程序?例如,消息使用者是服務器(但不包括web服務器並且沒有Servlet),或者嵌入了Jetty的可執行文件.jar部署不是.wars的Java服務器應用程序

構建和部署.war s是非常簡單的:Maven有戰爭原型,詹金斯有插件一堆部署.war文件到各種應用服務器,其中大部分接受新的Web應用程序在運行時上傳。像Elastic Beanstalk這樣的工具使得這個過程變得更加簡單,與服務器環境的管理息息相關。

相比而言,部署可執行文件.jar似乎重新發明了方向盤。我們需要找出最佳的方式來渲染依賴關係,並使用大量的Maven插件創建可執行的製品,將這個製造物存放在某個地方,然後找到將其安裝在目標服務器上的方法,並根據需要替換/升級它(Debian軟件包將是這樣做的一種方式)。

這一切似乎很「手冊」對我來說,這似乎是有利的部署應用,.war s到應用服務器,即使他們不是天生適合於這樣的環境來看,只是讓你獲得工具支持的好處。

+0

對於消息使用者來說,MessageDriven EJB是否合適?這些可以作爲JAR發佈到應用服務器。 – wrschneider 2012-07-20 01:53:56

+0

他們很可能是 - 不幸的是,我在一家小型創業公司認爲任何「重量級」都是撒旦的工作。 – 2012-07-20 07:40:24

回答

4

您可以通過將應用程序部署到osgi容器來實現此目的。

當osgi包啓動時,您可以掛鉤到osgi生命週期來運行應用程序。然後,您可以遠程啓動和停止容器(如果容器支持該容器)。使用maven時而是用窗簾插件陰影罐子並不難,我認爲這將是更易於管理,而不是處理數百個罐子放到你的貨櫃 -

您的應用程序可以定義他們的依賴作爲OSGi的艙單的一部分。

This question談論使用jenkins連續部署osgi包。

另一種(也是更標準的)方法是編寫使部署自動化的腳本 - 可能使用專用工具如puppetchef。傀儡有一個maven plugin,允許你從一個maven repo中提取文物用於你的木偶劇本。

從詹金斯運行木偶或廚師是微不足道的,如果你願意,你可以提供對非技術人員的部署版本的訪問,允許他們通過單擊按鈕將新版本部署到環境中。

贊@bagheera建議構建您的應用程序的rpms,並將它們作爲服務啓動,這是一種很好的方法,可以降低部署腳本的複雜性。

+0

感謝您的答覆 - 我會研究OSGi。關於編寫腳本,這通常是我希望避免的方法,但看起來這可能是不可能的。 – 2012-07-16 10:43:42

+0

如果您將腳本編寫與rpm建議配對,那麼腳本非常簡單1.)從Maven repo下載rpm 2.)安裝rpm。這[幻燈片](http://www.slideshare.net/actionjackx/automated-java-deployments-with-rpm)顯示了使用rpms後腳本變得多麼簡單 - 它使用webapps作爲示例,但jar也同樣有效。 – plasma147 2012-07-16 11:36:49

3

看起來您正在尋找一個依賴管理器來構建自包含的可執行jar以及用於部署的包管理器。除了你提到的工具外,你可以在linux上查看ant+ivy的build + dependency mgmt和rpmbuild + rpm + yum的包管理。

相關問題