将环境变量传递给大型机 JVM

Posted

技术标签:

【中文标题】将环境变量传递给大型机 JVM【英文标题】:Passing Environment variable to Mainframe JVM 【发布时间】:2020-05-20 18:06:54 【问题描述】:

我正在运行一个 JAVA 大型机 JAR。它在 z/OS 中使用 IBM JVMLDM 成功运行。我的下一步是集成一个内部日志框架。我需要使用 JCL 中的 STDENV DD 语句将几个环境变量(用户系统属性)传递到 JVM。我在 PARM 文件中使用 IBM(文档)提供的环境变量,如下所示:

IJO="$IJO -DCAR_PROP=6123548595"
EXPORT IBM_JAVA_OPTIONS="$IJO "

我也在以类似的方式使用以下环境变量:

IJO="$IJO -DCAR_PROP=6123548595"
EXPORT JZOS_JVM_OPTIONS="$IJO "

这些选项都不起作用,因为 JAR 仍然无法捕获该属性。寻找一些关于我可能不熟悉的陈述可能存在问题的见解。

文档 https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.iean500/bcdbatch.htm

【问题讨论】:

能否请您发布您的完整启动 JCL?您是否尝试过添加+T 参数来启用JZOS 跟踪?这应该显示 JZOS 已获取的所有环境变量以及使用的 JVM 选项。您是否注意到系统属性区分大小写?像 CAR_PROP 这样的全大写属性对于 java 程序来说看起来很不寻常...... 【参考方案1】:

使用小写的export 有效吗?即

IJO="$IJO -DCAR_PROP=6123548595"
export IBM_JAVA_OPTIONS="$IJO "

【讨论】:

那是我的错字。我在 JCL 中使用了小写的“导出”。

以上是关于将环境变量传递给大型机 JVM的主要内容,如果未能解决你的问题,请参考以下文章

如何将环境变量传递给pytest

将环境变量传递给多个命令

如何将环境变量传递给由 systemd 启动的服务

将主机环境变量传递给 dockerfile

如何将环境变量传递给前端 Web 应用程序?

将用户定义的环境变量传递给 tomcat