如何将指向javaagent的独立jar部署到Bluemix CloudFoundry

时间:2018-02-01 08:27:19

标签: java cloudfoundry vert.x

我一直在通过Vert.x开发一个小应用程序,尤其是Vertx-Sync。 Vertx-sync允许您使用异步API,但使用轻量级线程又称Fibers使用直接同步样式。要启动光纤检测,应将javaagent选项作为vm参数传递。作为一个例子,我运行我的应用程序:

 java -jar vertxTestCF -javaagent:{path-to-the-jar}/quasar-core-0.7.5-jdk8.jar 

。 一切都在本地运行良好,但我无法在云vi cloudfoundry CLI上部署vertxTestCF。我使用以下CLI部署vertxTestCF:

cf push -f manifest.yml vertxTestCF

这是我的manifest.yml:

    applications:
    - path: ./target/vertxTestCF-1.0-fat.jar
      memory: 256M
      instances: 1
      name: vertxTestCf
      buildpack: https://github.com/cloudfoundry/java-buildpack.git#3.x
      env:
          JAVA_OPTS: -javaagent:target/quasar-core-0.7.5-jdk8.jar

部署期间的错误消息是:

[APP/PROC/WEB/0] ERR Error opening zip file or JAR manifest missing : target/quasar-core-0.7.5-jdk8.

任何提示都会有所帮助。

1 个答案:

答案 0 :(得分:0)

您使用JAVA_OPTS走在正确的轨道上,但您设置的路径是错误的。它是本地计算机上的路径,但是,代码在Cloud Foundry上运行,它将具有不同的路径。

JAVA_OPTS: -javaagent:target/quasar-core-0.7.5-jdk8.jar

根据您的manifest.yml,您正在推送此文件:

 - path: ./target/vertxTestCF-1.0-fat.jar

这意味着应用程序的根目录将成为此JAR文件的根目录。这基本上是path的含义。 CF上应用程序的根目录将以您指定的路径开头。

因此,如果您需要引用quasar-core-0.7.5-jdk8.jar,则需要将其包含在vertxTestCF-1.0-fat.jar中,并且quasar-core-0.7.5-jdk8.jar的相对路径将是您将文件放入{{1}的路径}}

例如:

我有vertxTestCF-1.0-fat.jar。在其中我有另一个位于test-fat.jar的JAR。如果我需要引用第二个JAR,它将是lib/my-second.jar

希望有所帮助!