2012-09-26 29 views
4

我試圖通過命令行將我們的Java EE應用程序從我們的構建服務器(Jenkins)自動部署到遠程Glassfish服務器。 目前我正在使用asadmin並且它工作正常,但是這個選項要求我在生成服務器上安裝Glassfish - 我想避免這種情況,因爲我不需要它。構建服務器實際上只是運行構建和部署,所以我想盡可能保持服務器「乾淨」。通過cli部署到遠程Glassfish實例

我無法找到任何只下載asadmin工具的下載,而且我僅嘗試手動複製所需文件失敗,因爲某些* .jars依賴於我不知道的所以它總是失敗,除非我將整個glassfish安裝文件夾複製到構建服務器。

所以我的問題是: 是否有人知道如何在不安裝整個GlassFish服務器只安裝asadmin的工具? 另外我也很樂意使用任何其他命令行工具,只要它們允許我使用安全通信部署到遠程Glassfish實例。

回答

2

做更多的研究,我放棄了在試圖安裝的asadmin不完整的GlassFish安裝,而是使用後的Glassfish的REST管理界面。

我現在它的工作在一個簡單的批處理文件使用curl:一旦你知道你需要做什麼,但以防萬一別人需要這個,這裏

curl.exe^
    --user glassfish_username:glassfish_password^
    --insecure^
    -H "Accept: application/json"^
    -H "X-Requested-By: dummy"^
    -X POST^
    -F [email protected]^
    -F contextroot=yourcontextroot^
    -F force=true^
    https://yourservername:4848/management/domain/applications/application/ 

的REST API是相當直截了當幾個重要的點:

  • --insecure需要(通過捲曲),允許自簽名的和不受信任的SSL證書
  • 爲「接受」和「X-要求,以」頭屬性必須設置,否則Glassfish不處理請求並簡單地返回空白文檔作爲答案。不知道爲什麼,但設置這些參數使其工作。
  • 戰爭 文件作爲文章上的「ID」參數
  • 的URL必須完全按照上面的剪斷所示,即不與您的域名或更換「域」 傳遞的內容「應用程序」與你的應用程序名稱。這是實際的REST接口端點。無需在任何地方指定域名/應用程序名稱。
+0

什麼是你物理部署文件集?難道你不能把戰爭文件放在服務器上並完成交易嗎?還有更多嗎? – amphibient

+0

在我的情況下,構建服務器無法訪問應用程序服務器上的任何共享驅動器。爲了允許通過自動部署進行簡單的文件刪除,我們必須共享相應的autodeploy文件夾,但這不是一個選項。 CURL的使用允許我們通過HTTPS來實現。 – fdd