2009-08-11 32 views
3

我正在尋找一種在Linux(以及可能在Windows和其他操作系統上)中運行java服務器進程作爲後臺進程服務的工具。當涉及到如何構建具有生產能力的腳本並啓動配置時,我正在尋找最佳實踐。創建Java服務或守護進程腳本的最佳實踐

我熟悉項目構建的最佳實踐,使用Apache Maven或類似Apache ANT + Ivy來管理構建過程並管理外部依賴關係並構建工件和組件。

當談到創建包含配置和啓動腳本以及所有編譯代碼和依賴關係的項目程序集時,我不清楚最佳選擇是什麼。有沒有一個很好的開源項目可以作爲一個例子來看待,它們將構建過程捆綁在一個服務包裝器和配置腳本中?

我已經能夠使用Maven與Jetty Launch plugin運行我的Web應用程序,Terracotta Maven plugin測試多個JVM集羣服務器節點和我使用Maven的exec:java運行我的自定義的Java服務器,但我不知道使用這種能力的Maven實際上是「生產」質量,也意味着我的生產服務器依賴於從源構建服務器並從潛在的不可用服務器下載依賴關係。

下面是我在一個Java服務啓動解決方案尋找一些潛在的東西:

  1. 應該運行作爲Linux的服務或Windows服務過程
  2. 可以使用Maven插件或Ant腳本來構建並允許我處理配置文件和腳本
  3. 應該能夠包含我的所有項目從Apache Ant的依賴關係
  4. 應該能夠引入完整的Java Web應用程序服務器(例如Jetty 7)並使用我的自定義Web應用程序「戰爭
  5. 應該能夠處理標準的Java後臺程序服務(自定義的Java服務器)

一些我一直在尋找的選項是Java Service Wrapper,這是在Maven appassembler plugin使用。

也使用Maven的assembly plugin和自定義組裝描述符允許我定製構建輸出。

回答

3

Java服務包裝看起來很常見。我見過它被少數人使用,其中最着名的是nexus

3

實現各種Linux服務的首選(也稱爲「最佳實踐」)方法是創建一個可以啓動,停止和重新啓動服務並將其放入/etc/init.d的shell腳本。然後從相關的「rc。*」目錄中添加適當的符號鏈接。有關「init(8)」,「chkconfig(8)」等的信息,請參閱Linux的「man」條目。