首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jsr352批处理作业xml中,如何从系统读取/注入环境变量

在jsr352批处理作业xml中,如何从系统读取/注入环境变量
EN

Stack Overflow用户
提问于 2019-09-17 00:11:57
回答 1查看 107关注 0票数 1

我有一个名为ENV的环境变量,它保存DEV、QA或PROD区域作为值。当加载server.xml时,它包含使用此变量的相应数据库配置。例如: db-config-${env.GAH_ENV}.xml

我希望将相同的值作为作业参数或属性传递给批处理作业xml中的任何一个类。我怎么能做到这一点。

下面的代码片段不起作用

代码语言:javascript
复制
<property name="environment" value="${env.GAH_ENV}"/>
EN

回答 1

Stack Overflow用户

发布于 2019-09-17 20:29:49

简而言之,使用批处理属性可能不是一个好的解决方案,您可以考虑使用其他方法,如MicroProfile的@ConfigProperty.

原因是没有通过JSL替换访问环境变量的内置方法。对于一个工件来说,也没有一种方便的方法来设置要由稍后在作业执行中运行的另一个工件使用的属性值。

在特殊情况下,您将从将执行的同一个JVM中启动作业,当然,您可以将env var值作为作业参数进行传递。

但在一般情况下,如果您可以更改Java代码,并且实际上不需要批处理属性,那么我将使用通过@Inject @ConfigProperty注入的MicroProfile配置属性。

这样做会丢失特定于批的替换优先级,包括通过提交/启动传递的作业参数提供的覆盖。您还放弃了在其他JSL替换中使用此属性的能力(通过其他替换将其值“组合”到其他批处理属性中)。

但您至少可以获得一个具有自己不同优先级/覆盖级别的属性(例如,服务器配置、环境变量、微配置文件-配置.properties),这比总是通过System.getenv( )读取环境变量更灵活。

这肯定是下一个版本的批处理规范(现在是雅加达)需要考虑的一个方面。

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

https://stackoverflow.com/questions/57960755

复制
相关文章

相似问题

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