首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云创建:如何使用额外的JVM命令部署spring引导应用程序

云创建:如何使用额外的JVM命令部署spring引导应用程序
EN

Stack Overflow用户
提问于 2019-11-29 11:08:46
回答 2查看 3.5K关注 0票数 1

我正在使用关键的主机Spring引导应用程序在云铸造。我能够部署应用程序,没有任何命令罚款。但是,我的要求是使用一个额外的JVM命令来运行这个issue

代码语言:javascript
复制
-Doracle.jdbc.timezoneAsRegion=false

运行下面的清单,我得到错误,

代码语言:javascript
复制
---
applications:
- name: gl-bo-sample   
  command: java -jar -Doracle.jdbc.timezoneAsRegion=false
  path: ./target/backoffice-1.0-SNAPSHOT.jar
  buildpacks:
      - https://github.com/cloudfoundry/java-buildpack.git

CF日志

代码语言:javascript
复制
2019-11-29T16:33:45.606+05:30 [CELL/0] [OUT] Cell f38e366a-22ac-45ee-9dba-73e1f505525a creating container for instance e1475d2b-0c8e-4766-7e13-6da7
2019-11-29T16:33:45.952+05:30 [CELL/0] [OUT] Cell f38e366a-22ac-45ee-9dba-73e1f505525a successfully created container for instance e1475d2b-0c8e-4766-7e13-6da7
2019-11-29T16:33:46.958+05:30 [CELL/0] [OUT] Starting health monitoring of container
2019-11-29T16:33:47.168+05:30 [APP/PROC/WEB/0] [ERR] bash: java: command not found
2019-11-29T16:33:47.179+05:30 [APP/PROC/WEB/0] [OUT] Exit status 127
2019-11-29T16:33:47.182+05:30 [CELL/SSHD/0] [OUT] Exit status 0
2019-11-29T16:33:47.385+05:30 [CELL/0] [OUT] Cell f38e366a-22ac-45ee-9dba-73e1f505525a stopping instance e1475d2b-0c8e-4766-7e13-6da7
2019-11-29T16:33:47.385+05:30 [CELL/0] [OUT] Cell f38e366a-22ac-45ee-9dba-73e1f505525a destroying container for instance e1475d2b-0c8e-4766-7e13-6da7
2019-11-29T16:33:47.402+05:30 [API/2] [OUT] Process has crashed with type: "web"

有人能告诉我们如何实现这个或任何其他方法来实现这一点吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-30 19:58:12

好吧,给你几件事。

命令: java -jar -Doracle.jdbc.timezoneAsRegion=false

  1. 在使用Java时,不要设置命令,除非您非常非常清楚自己在做什么。它可能会导致问题,因为您正在完全覆盖JavabuildPack.
  2. 所设置的命令集,如果您设置了一个命令,则需要确保将其撤消。您可以通过从manifest.yml中删除它并运行cf push -c null来做到这一点。-c null将告诉服务器端删除保存命令,然后返回使用Java决定的内容。另一个选择是cf delete您的应用程序,但这并不总是可能的。
  3. 要设置JVM参数,您可以简单地使用cf set-env <app> JAVA_OPTS '-Doracle.jdbc.timezoneAsRegion=false,或者通过在manifest.yml中设置它们。您可以添加一个包含env变量的env:块。

例如:

..。JAVA_OPTS:-Doracle.jdbc.timezoneAsRegion=false .

这是因为Java在start命令中包含了$JAVA_OPTS,所以您在其中放入的任何内容都将被替换为启动应用程序的命令。如果您有一个可执行的JAR,也可以使用cf set-env <app> JBP_CONFIG_JAVA_MAIN '{ arguments: "--server.port=9090 --foo=bar" }'设置app参数。此选项用于设置由应用程序本身处理的argv参数,而不是JVM。以与JAVA_OPTS相同的方式,您可以在manifest.yml.

  • For的env:块中设置它的值,您获得bash: java: command not found的原因是因为JAVA_OPTS没有将java放在路径上。您需要设置java进程的完整路径,该路径位于$HOME/.java-buildpack/open_jdk_jre/bin/java。因此,如果你使用完整的路径,你可以做你正在做的上面的工作。尽管如此,我们强烈建议您不要设置command.

  • Side注释。不要把buildpack指向https://github.com/cloudfoundry/java-buildpack.git。当你这样做的时候,你会指向主分支,这是一个移动的目标。您通常应该使用平台提供的构建包,即cf buildpacks,或者向https://github.com/cloudfoundry/java-buildpack.git#v4.26这样的URL中添加一个发布标记,以获得JavaBuildPack.JavaBuildPack.

的v4.26。

希望这能帮上忙!

票数 6
EN

Stack Overflow用户

发布于 2019-11-29 12:34:10

您可以在application.properties中声明它,它应该工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59103652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档