我正在使用遺留的Java Enterprise服務器項目,目前我正在嘗試設置每晚構建。我們正在使用Maven 2,JBoss 4.2和Bamboo。我們的想法是,我們在我們的一個開發服務器上安裝了Bamboo代理,並且Maven構建被配置爲硬部署生成的.ear文件,然後重新啓動服務器。 (我們不能使用軟部署,因爲我們的傳統應用程序使用了一個在取消部署期間會導致異常的庫...我們將在某個時候刪除那個該死的庫,但不是現在。)當我運行Maven時,這很好用建立在我自己的機器上:服務器停止並重新啓動最新版本。如何從Maven啓動和停止JBoss服務器,綁定到與本地主機不同的地址?
但是,在dev服務器上,我們有多個綁定到不同IP地址的JBoss服務器實例。而我使用的Maven JBoss插件只能啓動和停止綁定到localhost的服務器(默認)。我剛剛下載的源代碼,它和它只是在JBoss bin目錄執行運行和關機腳本,像這樣:
launch("run", "-c " + serverName);
分別
和
launch("shutdown", "-S");
。 因此,如您所見,啓動時不使用主機綁定(-b)參數,關機也不會終止除監聽端口localhost:1099(默認JNDI端口)以外的任何其他服務器。
我認爲啓動的解決方法是直接在JBoss配置文件中配置所需的主機地址。 (默認行爲是這些配置文件包含像${jboss.bind.address}
這樣的系統屬性,並且在啓動時,JBoss會動態地將它們替換爲指定爲運行腳本的-b參數的實際主機地址,或默認爲localhost)。因此,如果我將確切的IP直接放在這些配置文件中,理論上服務器將綁定到該IP,而不管缺少-b命令行參數。此外,我想使用0.0.0.0
作爲主機名也可以解決停止問題......如果我們在同一臺機器上沒有其他服務器。但是,這可能在另一臺完全保留用於夜間構建的服務器上工作。我們只需要遷移Bamboo代理等......幾個小時的額外工作。而我們沒有,當然不使用的服務器源源不絕,所以我們可能會回到原點1,一旦我們需要另一個每晚爲我們的發行版分支...
另一種方法是嘗試並考慮使用貨物插件,而不是我現在還不知道,它是否有能力做到這一點。
最後但並非最不重要的一點是,我實際上可以擴展JBoss插件來處理主機綁定 - 我假設完全需要幾個活動時間,但一勞永逸地解決了這個問題。到目前爲止,這在我看來是最可行的選擇。
任何人都可以提供這些或其他解決方案的具體經驗/意見嗎?
感謝您的幫助Pascal,不幸的是我無法使它適用於我們的應用程序,因爲上述庫需要額外的類路徑設置才能運行:-( 對於更多「標準」應用程序,它可能會工作 我現在將返回到JBoss Maven插件... Péter – 2010-02-04 14:54:50
@Péter祝你好運! – 2010-02-04 15:21:19