1

我目前正在將多個WAR和Java批處理文件的單個清單文件配置部署部署到IBM Bluemix(CloudFoundry)。如何使用Java將JAR添加到CloudFoundry java buildpack的類路徑主目錄

想法是,我只是運行「cf推」,然後一些魔術發生,我完成了。

這適用於在IBM Liberty上運行的WAR文件以及綁定到它的PostgreSQL服務,但不幸的是它不適用於Standalone - Java Main類,因爲我不知道如何將其他jar添加到classpath 。

這是我manifest.yml:

#declared-services: 
# postgresql: 
# label: elephantsql 
# plan: turtle 

applications: 
- name: multipleWarDeploy1 
    disk: 1024M 
    path: Web/Web.war 
    memory: 256M 
    instances: 2 
    host: sixendpointURL 
    services: 
    - postgresql 
- name: batch 
    disk: 1024M 
    path: Batch/Batch.jar 
    buildpack: java_buildpack 
    memory: 256M 
    no-route: true 
    instances: 1 
    services: 
    - postgresql 

正如你所看到的,用於批處理應用程序的Java主buildpack只允許我引用一個JAR文件,所以我不知道如何上傳包含罐子的lib文件夾。我已經將引用放入Batch.jar的MANIFEST.MF文件中 - 所以它可以在lib文件夾存在的本地工作 - 但不是遠程的,因爲此文件夾不會被推送到Bluemix,而只是Batch.jar文件。

任何想法?

TNX很多 羅密歐

回答

0

一個解決方案,可以推動一個包你的自由實例,作爲自由運行時允許的選項。 您可以通過執行'server package zip-name --include = usr'創建liberty服務器zip然後您可以使用'cf push app-name -p zip-name'推送zip文件

有關完整文檔大約從 https://www.ng.bluemix.net/docs/#starters/liberty/index.html#liberty

下面這個選項開始是關於推動一個自由的應用程序的可用選項的文檔: https://www.ng.bluemix.net/docs/starters/liberty/index.html#optionsforpushinglibertyapplications

+0

嗨,我正在談論不使用自由的批處理應用程序... –

0

我只是測試其在服務器目錄中的兩個批次的戰爭文件,然後按下該目錄到具有指定server.xml的單個Bluemix應用程序。兩個應用程序一旦推送就能正常工作

創建一個目錄結構如下圖所示:

Directory Structure Example

添加您的WAR文件到應用程序文件夾(我的例子中有我以前兩個樣品戰爭文件),每個應用程序添加到您的服務器.xml文件。

我添加到我的服務器的兩條線。XML如下所示:

<application name="BonusPayout" context-root="/BonusPayout" type="war" location="BonusPayout.war"/> 
<application name="SimpleBatchJob" context-root="/SimpleBatchJob" type="war" location="SimpleBatchJob.war"/> 

最後運行下面的命令,而在defaultServer目錄的父目錄,你剛纔提出:

CF推YourBluemixAppName -p defaultServer

這將推動整個包含所有戰爭文件的目錄。