我目前正致力于将多个WAR和Java Batch文件的单个清单文件配置部署部署到IBM Bluemix(CloudFoundry)。
我的想法是,我只是运行" cf push"然后一些魔法发生了,我已经完成了。
这对于在IBM Liberty上运行的WAR文件以及绑定到它的PostgreSQL服务非常有效,但遗憾的是,它不适用于Standalone - Java Main类,因为我不知道如何放置其他jar到类路径。
这是我的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
正如您所看到的,用于Batch应用程序的Java Main buildpack只允许我引用一个jar文件,因此我想知道如何上传包含jar的lib文件夹。我已经将引用放入Batch.jar的MANIFEST.MF文件中 - 所以这在本地工作的地方有lib文件夹 - 但不是远程的,因为这个文件夹没有被推送到Bluemix,只有批处理.jar文件。
有什么想法吗?
tnx很多 罗密欧答案 0 :(得分:1)
我会使用像one-jar这样的工具将我所有的罐子打包成一个罐子。
答案 1 :(得分:0)
解决方案可能是推送自由实例的包,作为自由运行时的允许选项。 您可以通过执行'server package zip-name --include = usr'来创建自由服务器zip 然后您可以使用以下命令推送zip:'cf push app-name -p zip-name'
有关此选项的完整文档,请从 https://www.ng.bluemix.net/docs/#starters/liberty/index.html#liberty
以下是有关推送自由应用程序的可用选项的文档: https://www.ng.bluemix.net/docs/starters/liberty/index.html#optionsforpushinglibertyapplications
答案 2 :(得分:0)
我刚测试了在服务器目录中有两个批处理war文件,然后将该目录推送到具有指定server.xml的单个Bluemix应用程序。一旦推送,两个应用程序都能正常工作。
创建如下目录结构:
然后将war文件添加到apps文件夹(我的示例中有我使用的两个示例war文件)并将每个应用程序添加到server.xml文件中。
我添加到server.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 push YourBluemixAppName -p defaultServer
这将推送包含所有war文件的整个目录。